【JAVA】JScrollPane可以设置背景图片吗与JPanel面板中嵌入JScrollPane面板

JScrollPane可以设置背景图片吗?

http://wenda.tianya.cn/question/0668858f9ed42b0c

问题如上面连接。

大概就是,原本只调用JScrollPane面板,所以显示如下只有一个JScrollPane面板:感觉干巴巴的想要个背景。于是在网上搜索办法可不可以给JScrollPane面板设置背景。

部分代码:

        final JScrollPane scrollPane = new JScrollPane();
        getContentPane().add(scrollPane, BorderLayout.CENTER);

【JAVA】JScrollPane可以设置背景图片吗与JPanel面板中嵌入JScrollPane面板_第1张图片

找了好几个小时,无果,一搜索全是设置背景为透明,有一个说是自定义一个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);

效果如图:

【JAVA】JScrollPane可以设置背景图片吗与JPanel面板中嵌入JScrollPane面板_第2张图片

目前也就这种方法可以实现我背景图的愿望了,虽然还是有点不美观,如果这个滚动面板可以跟着表的大小一样就好了。我们马上就交课设了,这个花里胡哨的以后再搞吧。我接着去肝作业了。

惨兮兮。

感觉我可能嫁不出去了。

你可能感兴趣的:(java,Jpanel,JScrollPane)