我目前正在尝试将JList opaque放在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
- 面板的边界,并带有白色背景。
我做错了什么?
答案 0 :(得分:2)
您不要让面板(NavigationView
)本身透明
public void initialize() {
setOpaque(false);
this.pane = new JScrollPane();
this.list = new JList();
}
答案 1 :(得分:2)
我认为你也应该致电this.setOpaque(false);
。
但也请检查L& F. L& F可以“抑制”透明度。我记得Mac上QuaQua L& F的类似错误。