2011-07-16 236 views
2

我正在做一個簡單的Swing佈局(請參閱image),但由於某種原因,無論我嘗試什麼,我都無法更改分割UI三部分的「邊框」的顏色。我錯過了什麼嗎?無法更改佈局邊框顏色

使用GroupLayout完成佈局。

編輯:

綠色部分是包含在的GroupLayout內的每個單獨JPanels。

我已經嘗試過背景和前景色,對任何對象都有意義。我曾嘗試將EmptyBorder應用於每個jpanel,但仍然沒有運氣。我認爲這可能與佈局有關,但我甚至不確定。

這是相關的佈局代碼。請注意,這是所有自動生成的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))) 
     ); 
+0

這個問題是無法解析的,除非你有一些示例代碼。你有什麼嘗試? – TheLQ

+0

編輯:更新包括一些佈局代碼 – tleCan

+0

@tleCan,您應該編輯您的標籤以包含「swing」。 – Moonbeam

回答

1

您應該設置任何容器的內容窗格中,或覆蓋它的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


正如你所看到的,之間有色藍色暗的陰影區域。

+0

可悲的是,這是行不通的。所有佔據jframe的三個jpanel都已經設置了背景顏色。它工作的很好,但它仍然顯示灰色拆分器 – tleCan

+0

@tleCan,即使您使用frame.getContentPane()。setBackground(Color.BLUE.darker())''設置'JFrame'的背景色。 – Moonbeam

+0

完美無瑕!謝謝!在JFrame和this.getContentPane()。setBackground ...上做this.setBackground ...之間有什麼區別? – tleCan