今天写了个小程序,用到TextArea,总觉得TextArea白白的背景很难看,可是又不能直接添加背景,于是参考之前给JLabel添加动态gif图像的方法,给textArea添加背景图像
//定义包含JTextArea的滚动面板
final ImageIcon imageIcon = new ImageIcon(MathTest.class.getResource("/drawable/math_Test_1.png"));
final JTextArea taShow=new JTextArea(){
Image image = imageIcon.getImage();
public void paint(Graphics g) {
super.paint(g);
Graphics2D graph = (Graphics2D) g;
if (image != null) {
// 描绘图片
graph.drawImage(image, 0, 0, this);
}
}
};
taShow.setBounds(3,0,300,500);
taShow.setFont(new Font("",1,14));
final JScrollPane showScrollPane=new JScrollPane(taShow);
即用2D画图的方法自己画背景。
结果发现这样画的背景把文字给覆盖掉了……很郁闷,后来百度了好久,发现用paintComponent绘制组件即可实现,至于paint和paintComponent的区别暂叙述了代码如下
//定义包含JTextArea的滚动面板
final ImageIcon imageIcon = new ImageIcon(MathTest.class.getResource("/drawable/math_background.png"));
final JTextArea taShow=new JTextArea(){
{
setOpaque(false);
}
Image image = imageIcon.getImage();
public void paintComponent(Graphics g) {
g.drawImage(imageIcon.getImage(), 0, 0, this);
super.paintComponent(g);
}
};