java - 无法更改布局边框颜色

标签 java swing layout colors border

我正在做一个简单的 Swing 布局(请参阅 image),但出于某种原因,无论我尝试什么,我都无法更改将 UI 的三个部分分开的“边框”的颜色。我错过了什么吗?

布局是使用 GroupLayout 完成的。

编辑:

绿色部分是 GroupLayout 中包含的每个单独的 JPanel。

我已经在任何有意义的对象上尝试了背景色和前景色。我已经尝试将 EmptyBorder 应用于每个 jpanels,但仍然没有成功。我认为这可能与布局有关,但我什至不确定。

这是相关的布局代码。请注意,这都是由 Netbeans 自动生成的:

    javax.swing.GroupLayout pnlTopLayout = new javax.swing.GroupLayout(pnlTop);
        pnlTop.setLayout(pnlTopLayout);
        pnlTopLayout.setHorizontalGroup(
            pnlTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 532, Short.MAX_VALUE)
        );
        pnlTopLayout.setVerticalGroup(
            pnlTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 59, Short.MAX_VALUE)
        );

javax.swing.GroupLayout pnlSideLayout = new javax.swing.GroupLayout(pnlSide);
        pnlSide.setLayout(pnlSideLayout);
        pnlSideLayout.setHorizontalGroup(
            pnlSideLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 200, Short.MAX_VALUE)
        );
        pnlSideLayout.setVerticalGroup(
            pnlSideLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 214, Short.MAX_VALUE)
        );

javax.swing.GroupLayout pnlMainLayout = new javax.swing.GroupLayout(pnlMain);
        pnlMain.setLayout(pnlMainLayout);
        pnlMainLayout.setHorizontalGroup(
            pnlMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 326, Short.MAX_VALUE)
        );
        pnlMainLayout.setVerticalGroup(
            pnlMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 214, Short.MAX_VALUE)
        );

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(pnlSide, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(pnlMain, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addComponent(pnlTop, javax.swing.GroupLayout.DEFAULT_SIZE, 532, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(pnlTop, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(pnlMain, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(pnlSide, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
        );

最佳答案

您应该为容器的内容 Pane 或覆盖它的 JComponent(例如 JPanel)设置背景颜色。


public final class Demo {
    private static BufferedImage bi;
    
    public static void main(String[] args){
        try {
            loadImage();
            
            SwingUtilities.invokeLater(new Runnable(){
                @Override
                public void run() {
                    createAndShowGUI();             
                }
            });
        } catch (IOException e) {
            // handle exception
        }
    }
    
    private static void loadImage() throws IOException{
        bi = ImageIO.read(Demo.class.getResource("../resources/whitefro1.jpg"));
    }
    
    private static void createAndShowGUI(){
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        final JPanel panel = new JPanel();
        panel.setBackground(Color.BLUE.darker()); // here
        
        final JLabel labelOne = new JLabel();
        labelOne.setIcon(new ImageIcon(bi));
        final JLabel labelTwo = new JLabel();
        labelTwo.setIcon(new ImageIcon(bi));
        
        panel.add(labelOne);
        panel.add(labelTwo);
        frame.add(panel);       
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

enter image description here


如您所见,两者之间的区域颜色为深蓝色。

关于java - 无法更改布局边框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720643/

相关文章:

java - JTextPane 适合底层 JPanel 和 JFrame

c# - 将可用项目部分中的所有项目添加到 Devexpress Layout Control?

java - 使用 Java 和 Ektorp 在 CouchDB 中进行批量更新

java - 将 MVP 模式应用于 JDialogs

java - 打开新浏览器选项卡时的 SessionAttributes

java - 包含文本的 JTextfield 上出现 nullpointerException

xml - 在主题中扩展 Magento 小部件布局

jquery - 开发网站时如何处理不同的屏幕分辨率/屏幕尺寸?

java - 在java中基于逗号分隔的字符串创建json?

java - 为什么编译器没有捕捉到这个错误?