2017-07-19 83 views
-1

我已经把相当多的对象放入这个JFrame。然而,其中许多人不会出现,直到我把它们主要放在按钮以及JTextField。我只包含了JSpinner组件,因此它不那么长。我的纺纱厂里有没有什么东西可以让我们的纺纱厂不会出现? 我已经很多了,所以它只是一个文本框。仍然没有出现。我已经把所有东西放在面板上,但是仍然没有显示出来。制作GUI的麻烦。标签,旋钮和按钮不出现

public static void screen() { 
    JFrame myFrame = new JFrame("Yore"); 
    myFrame.setAlwaysOnTop(true); 
    myFrame.setResizable(false); 
    myFrame.setForeground(Color.BLACK); 
    myFrame.setSize(300,365); 
    myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    myFrame.setVisible(true); 
    myFrame.setBackground(Color.WHITE); 
    JPanel panel = new JPanel(); 
    myFrame.setContentPane(panel); 
    JTextField Username = new JTextField(); 
    Username.setText("Username"); 
    Username.setColumns(10); 
    panel.add(Username); 

    } 
+1

1)为了更好地提供帮助,请发布[MCVE]或[简短自包含正确示例](http://www.sscce.org/)。 2)Java GUI必须在不同的语言环境中使用不同的PLAF来处理不同的操作系统,屏幕大小,屏幕分辨率等。因此,它们不利于像素的完美布局。请使用布局管理器或[它们的组合](http://stackoverflow.com/a/5630271/418556)以及[white space]的布局填充和边框(http://stackoverflow.com/a/17874718/ 418556)。 **我的第一个猜测是这是问题的核心。但我不喜欢猜测 - 所以发布一个MCVE。** –

+0

感谢您的帮助。我会记住这一点。感谢您使用布局管理器的建议,我现在就试试。 – Xofox

+1

*“还有其他建议吗?”*发布一个MCVE。 –

回答

0

对不起,我忘记了pne语句。

public static void screen() { 
    JFrame myFrame = new JFrame("Yore"); 
    myFrame.setAlwaysOnTop(true); 
    myFrame.setResizable(false); 
    myFrame.setForeground(Color.BLACK); 
    myFrame.setSize(300,365); 
    myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    myFrame.setVisible(true); 
    myFrame.setBackground(Color.WHITE); 
    JPanel panel = new JPanel(); 
    myFrame.setContentPane(panel); 
    JTextField Username = new JTextField(); 
    Username.setText("Username"); 
    Username.setColumns(10); 
    panel.add(Username); 

    panel.validate(); 

    } 
+0

你刚才为我做了这个工作!非常感谢你的帮助! – Xofox

0

尝试使用该框架的布局管理器。另外,将JPanel添加到框架并将所有的Spinners添加到面板。

使用正确的布局管理器,您可以编程方式将Spinners添加到面板,以便您不需要对边界进行硬编码。例如,您还可以在窗口调整大小时调整它们的大小。

看看这里开始使用布局管理器。 https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

+0

好吧,所以我支持一切,重新开始。然而,重新添加文本面板后,它仍然没有出现。我甚至添加了表单布局,但仍然没有。还有什么建议吗? – Xofox

+0

很难继续用你提供的这种有限的代码来帮助你 – BaneDad

0

myFrame.getContentPane()返回一个AWT容器,而不是Swing组件。要更改此设置,您必须使用

JPanel panel = new JPanel(); 
panel.add(..); 
myFrame.setContentPane(panel); 
panel.validate(); 

将您的纺纱器添加到面板并解决问题。

0

将spinners添加到面板。然后将面板添加到您的JFrame。

panel.add(spinner_5);