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();
}
}