JScrollPane可以设置背景图片吗?
http://wenda.tianya.cn/question/0668858f9ed42b0c
问题如上面连接。
大概就是,原本只调用JScrollPane面板,所以显示如下只有一个JScrollPane面板:感觉干巴巴的想要个背景。于是在网上搜索办法可不可以给JScrollPane面板设置背景。
部分代码:
final JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane, BorderLayout.CENTER);
找了好几个小时,无果,一搜索全是设置背景为透明,有一个说是自定义一个UI类,作为一个Java菜鸟,我也就观望一下了。然后看到这个帖子:https://blog.csdn.net/cao478208248/article/details/21965697 解决我的问题。
就是在JPanel面板的基础上加JScrollPane面板。
因为JPanel面板可以设置背景,自定义背景颜色,也可以设置背景图片,具体方法有很多博客有写,比如写一个JPanel的派生类BackgroudPanel.java如下:
import java.awt.*;
import javax.swing.JPanel;
/**
* @Author: lanlanla
* @Description: 设置背景颜色
* @Date: 2019-11-08 12:08
*/
public class BackgroundPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = -6352788025440244338L;
private Image image = null;
public BackgroundPanel(Image image) {
this.image = image;
}
// 固定背景图片,允许这个JPanel可以在图片上添加其他组件
protected void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
}
}
然后使用赋值兼容规则:(部分代码)
setBounds(100, 100, 750, 650);//450,300
//**********给JPanel模板设置背景图片,还可以是动图呢************************
Image image=new ImageIcon("./images/3.gif").getImage();
JPanel p1=new BackgroundPanel(image);
//下面是把JScrollPane面板嵌入JPanel面板的方法:
JTextArea text = new JTextArea();
final JScrollPane scrollPane = new JScrollPane(text);
p1.add(scrollPane);
getContentPane().add(p1, BorderLayout.CENTER);
效果如图:
目前也就这种方法可以实现我背景图的愿望了,虽然还是有点不美观,如果这个滚动面板可以跟着表的大小一样就好了。我们马上就交课设了,这个花里胡哨的以后再搞吧。我接着去肝作业了。
惨兮兮。
感觉我可能嫁不出去了。