今天写了个小程序,用到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);
}
};
本文介绍了一种在Java Swing中为JTextArea设置背景图片的方法,通过重写paintComponent方法并调整绘制顺序,确保文本正常显示在图片背景之上。
8605

被折叠的 条评论
为什么被折叠?



