2015-01-31 84 views
0

這是我想要的結果:http://imgur.com/tGleIly,但使用BorderLayout居中。相反,我得到這個:http://imgur.com/jYgjM1F。所以,基本上設置佈局重置我的背景,並把整個外框上的按鈕:將佈局設置爲JPanel重置按鈕

frame.setContentPane(new Pane()); 
frame.getContentPane().setBackground(Color.GRAY); 

我也試過這樣:

JPanel panel = new JPanel(); 
panel.add(bStart); 
add(panel, BorderLayout.CENTER); 

但它不工作。

public class Pane extends JPanel{ 
    public Pane(){ 
     ImageIcon start = new ImageIcon("Start.png"); 
     ImageIcon startroll = new ImageIcon("Start-Hover.png"); 
     ImageIcon startselect = new ImageIcon("Start-Pressed.png"); 

     JButton bStart = new JButton(start); 


     Insets margin = new Insets(-10,-10,-10,-10); 
     bStart.setMargin(margin); 
     bStart.setRolloverEnabled(true); 
     bStart.setRolloverIcon(startroll); 
     bStart.setPressedIcon(startselect); 
     bStart.setBorderPainted(false); 


     setLayout(new BorderLayout()); 
     add(bStart, BorderLayout.CENTER); 
+0

* 「這是我想要的結果:http://imgur.com/tGleIly,但使用的BorderLayout中心」 *使用'GridBagLayout'到中心的組成部分。有關示例,請參閱[此答案](http://stackoverflow.com/a/7181197/418556)。 – 2015-01-31 19:10:16

+0

之前設置佈局,沒有效果。 – zaa 2015-01-31 19:11:34

+1

@zaa,GridBagLayout將工作。如果您遇到問題,請發佈適當的[SSCCE](http://sscce.org/)來說明問題。 – camickr 2015-01-31 20:17:01

回答

2
frame.getContentPane.setLayout(new GridBagLayout()); 
+0

FlowLayout.CENTER? – zaa 2015-01-31 20:32:45

+0

@zaa是的,抱歉... Derp。 – nyxaria 2015-01-31 20:33:30

+0

那不就是水平居中而不是垂直居中嗎? – MadProgrammer 2015-01-31 20:43:59