有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JScrollPane中的java透明JList

我目前正在尝试将JList设置为不透明,并放置在JScrollPane中。我试着把一切都设置为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-面板的边界。 我做错了什么


共 (2) 个答案

  1. # 1 楼答案

    我想你也应该打电话给this.setOpaque(false);

    但也要看看L&;F.L&;F.我记得QuaQua L&;F在Mac上

  2. # 2 楼答案

    你不能让面板本身透明

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