Java在JTextArea中显示一个图片背景的小例子 .

来源:互联网 发布:宝宝认动物图片软件 编辑:程序博客网 时间:2024/05/20 02:54
在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 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 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(); }}


 

原创粉丝点击