2011-07-16 25 views
2

私は単純なSwingレイアウト(imageを参照)を行っていますが、私が試したことに関係なく何らかの理由でUIの3つのセクションを分割する '境界線'の色を変更できません。何か不足していますか?レイアウトの境界線の色を変更することはできません

レイアウトはGroupLayoutを使用して行われます。

EDIT:

緑色部分はGroupLayout内に含まれる各個々のJPanelです。

私は、背景と前景の色を、それが理にかなっているオブジェクトにしようとしました。 EmptyBorderを各jpanelsに適用しようとしましたが、まだ運がありません。私はそれがレイアウトと関係があるかもしれないと思うが、私はそれについてもわからない。

ここに関連するレイアウトコードがあります。

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を含むように更新しました。タグを編集して「スイング」を含める必要があります。 – Moonbeam

答えて

1

あなたがいずれかのコンテナのコンテンツ・ペインの背景色を設定、またはJComponentしなければならない(例えばJPanel)それをオーバーレイ:これはすべて自動生成Netbeansのであったことに留意されたいです。 enter image description here


あなたが見ることができるように

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); 
    } 
} 


、青の暗い影を着色されているとの間の領域。

+0

悲しいことに、それはうまくいきません。 jframeを占める3つのjpanelはすべて、既に背景色を設定しています。それは素晴らしいですが、まだ灰色のスプリッターを示しています – tleCan

+0

@leCan、 'frame.getContentPane()。setBackground(Color.BLUE.darker())'を使って 'JFrame'の背景色を設定したとしても? – Moonbeam

+0

完璧でした!ありがとう! this.setBackground ...とJFrameとthis.getContentPane()の違いは何ですか?setBackground ...? – tleCan

関連する問題