2014-10-29 70 views
1

我以正确的方式创建了jbutton(我假设),并将它添加到jFrame,有什么理由说明我运行它时无法看到按钮?Java jbutton不可见

import javax.swing.*; 
import java.awt.*; 

public class MainMenu{ 
    public JFrame mainframe; 
    public JButton newGameBTN; 
    public JLabel title; 

    public MainMenu(){ 
     mainframe = new JFrame("Java Assignment"); 
     mainframe.setSize(220 ,480); 
     mainframe.setLocationRelativeTo(null); 
     mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     newGameBTN = new JButton("New Game"); 
     title = new JLabel ("Java Assignment",SwingConstants.CENTER); 
     mainframe.getContentPane().add(newGameBTN); 
     mainframe.getContentPane().add(title); 

     mainframe.setVisible(true); 
    } 
} 

回答

3
mainframe.getContentPane().add(newGameBTN); 
mainframe.getContentPane().add(title); 

为JFrame的内容窗格中的默认布局是BorderLayout的。如果不指定约束,则将组件添加到“CENTER”。但是只能在中心有一个组件,所以添加的第二个组件会替换第一个组件。尝试:

mainframe.getContentPane().add(newGameBTN, BorderLayout.NORTH); 
+0

新问题,newGameBTN jButton与jFrame的大小相同,尽管它的参数使用.setSize()设置; 。 – ThomasMcDonald 2014-10-29 00:21:46

+1

@ThomasMcDonald,阅读[Layout Manager](http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)上的教程。首先阅读BorderLayout的工作原理,以便更好地理解。然后阅读其他布局管理器,并使用你想要的一个布局管理器(或其组合)。在使用布局管理器时切勿使用setSize()。 – camickr 2014-10-29 03:01:59