2013-05-20 47 views
0

因此對於這個程序,我試圖在左邊有一個JToolBar,右邊是這個頻譜面板。我目前正在使用BorderLayout進行添加,但正如您所看到的,我添加的光譜(青色)在其周圍有一個黑色邊框(以下面板)。爲什麼它不能填充JPanel的右側?調整GUI JPanels以適應

http://imgur.com/pTqMeGM

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.Color; 

import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JToolBar; 

public class Spectrum extends JFrame{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    /* 
    * 
    */ 

    public Spectrum(){ 
     JPanel main = new JPanel(new BorderLayout()); 
     JPanel rightside = new JPanel(); 
     JLabel spectrum = new JLabel("spectrum goes here"); 
     JToolBar toolbar = new JToolBar(null, JToolBar.VERTICAL); 
     JButton button1 = new JButton("Icon 1"); 
     JButton button2 = new JButton("Icon 2"); 

     main.setBackground(Color.RED); 
     main.setPreferredSize(new Dimension(800, 500)); 

     rightside.setBackground(Color.black); 

     spectrum.setPreferredSize(new Dimension(750,500)); 
     spectrum.setOpaque(true); 
     spectrum.setBackground(Color.cyan); 

     toolbar.setPreferredSize(new Dimension(50, 500)); 
     toolbar.setFloatable(false); 

     button1.setOpaque(true); 
     button2.setOpaque(true); 
     button1.setBackground(Color.blue); 
     button2.setBackground(Color.green); 

     toolbar.add(button1); 
     toolbar.add(button2); 

     rightside.add(spectrum); 
     main.add(toolbar, BorderLayout.WEST); 
     main.add(rightside, BorderLayout.EAST); 

     setContentPane(main); 

     pack(); 
     setVisible(true); 
    } 

} 
+0

添加rightside到中心... main.add(rightside,BorderLayout.CENTER);避免篡改PreferredSizes太多。無論如何,Swing都會讓你的組件擺脫困境。 –

+0

如果我刪除優先大小,並嘗試添加版權(BO.center)它只佔用整個框架,並覆蓋工具欄 – bforcer

+0

註釋只是setidededSize ... //spectrum.setPreferredSize(new Dimension (750500)); –

回答

0

我建議你做如下改變。

main.add(rightside, BorderLayout.EAST); 

main.add(rightside, BorderLayout.CENTER);