繁体   English   中英

JScrollPane中的透明JList

[英]Transparent JList in JScrollPane

我目前正在尝试使放置在JScrollPane中的JList不透明。 我试图将所有内容都设置为setOpaque(false) ,但仍然无法正常工作。

这是代码:

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class NavigationView extends JPanel{

    private static final long serialVersionUID = 8033665282200374807L;

    private JScrollPane pane;
    private JList list;

    public NavigationView() {
        this.initialize();
        this.build();
        this.configure();
    }

    public void initialize() {
        this.pane = new JScrollPane();
        this.list = new JList();
    }

    public void build() {
        this.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.BOTH;

        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.weightx = 1;
        gbc.weighty = 1;
        gbc.gridwidth = 1;
        gbc.insets = new Insets(5, 5, 5, 5);
        this.add(this.pane, gbc);
    }


    public void configure() {
        this.pane.setOpaque(false);
        this.pane.setViewportView(this.list);
        this.pane.getViewport().setOpaque(false);
        this.list.setOpaque(false);
        ((DefaultListCellRenderer) this.list.getCellRenderer()).setOpaque(false);
    }
}

如果我将此面板添加到彩色背景的JFrame中,我仍然会看到带有白色背景的NavigationView -Panel的边界。 我究竟做错了什么?

您不会使面板( NavigationView )本身透明

public void initialize() {
    setOpaque(false);
    this.pane = new JScrollPane();
    this.list = new JList();
}

我认为您也应该调用this.setOpaque(false);

但也请检查L&F。 L&F可能会“抑制”透明度。 我记得在Mac上QuaQua L&F的类似错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM