Java在JTextArea中显示一个图片背景的小例子,javajtextarea,在JTextArea中显
分享于 点击 16552 次 点评:1
Java在JTextArea中显示一个图片背景的小例子,javajtextarea,在JTextArea中显
在JTextArea中显示一个图片背景,使用本方法画出的背景图片将会随着滚动条而移动位置,适合信签等应用。
如果需要背景图片始终不动,可以在一个JPanel上画好背景图形,然后将滚动组件和文本组件放上来(滚动和文本都需要设置背景透明),这样就可以看到下面的背景图片了,而且不会因为滚动而移动位置。
//背景随滚动而移动位置import java.awt.Graphics;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTextArea;/** * 在JTextArea中显示一个图片背景(背景随滚动而移动位置) * * @author 五斗米 <如转载请保留作者和出处> * @blog <a href="http://blog.csdn.net/mq612">http://blog.csdn.net/mq612 */public class Test extends JFrame { private static final long serialVersionUID = 4785452373598819719L; private JScrollPane sp = null; private JTextArea text = null; private ImageIcon imageIcon = null; public Test() { super("JTextArea"); imageIcon = new ImageIcon("photo.jpg"); text = new JTextArea() { private static final long serialVersionUID = -8220994963464909915L; { setOpaque(false); // 设置透明 } protected void paintComponent(Graphics g) { g.drawImage(imageIcon.getImage(), 0, 0, this); super.paintComponent(g); } }; sp = new JScrollPane(text); this.getContentPane().add(sp); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(360, 260); this.setVisible(true); } public static void main(String args[]) { new Test(); }}//背景不随滚动而移动位置import java.awt.BorderLayout;import java.awt.Graphics;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;/** * 在JTextArea中显示一个图片背景(背景不随滚动而移动位置) * * @author 五斗米 <如转载请保留作者和出处> * @blog <a href="http://blog.csdn.net/mq612">http://blog.csdn.net/mq612 */public class Test extends JFrame { private static final long serialVersionUID = 4785452373598819719L; private JScrollPane sp = null; private JTextArea text = null; private ImageIcon imageIcon = null; public Test() { super("JTextArea"); imageIcon = new ImageIcon("photo.jpg"); // 构造文本组件并使之透明 text = new JTextArea(); text.setOpaque(false); // 构造滚动组件并使之透明 sp = new JScrollPane(text); sp.setOpaque(false); sp.getViewport().setOpaque(false); // 构造一个背景JPanel JPanel backdrop = new JPanel() { private static final long serialVersionUID = 1957203784117943458L; { this.setOpaque(false); this.setLayout(new BorderLayout()); } public void paintComponent(Graphics g) { g.drawImage(imageIcon.getImage(), 0, 0, this); super.paintComponents(g); } }; // 将滚动组件加入 backdrop.add(sp); // 将背景组件加入窗体 this.getContentPane().add(backdrop); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(360, 260); this.setVisible(true); } public static void main(String args[]) { new Test(); }}//该片段来自于http://byrx.net
用户点评