这是我第一次使用JFrame。我无法让窗口显示我嵌套在JFrame中的文本区域。我正在尝试使用我的名字获取文本字段以显示在列表结果上方,我已经省略了格式,直到我可以让JFrame工作。
public void printResults(String[] names, int[] temp, int[][] scores, float[] averages, char[] letters){
JTextArea outarea= new JTextArea(5,20);
JTextArea name = new JTextArea(5,20);
Font font = new Font("Tahoma", Font.BOLD, 48);
name.setFont(font);
name.setText("Made By Durka Durka");
JFrame window = new JFrame();
window.getContentPane().add(name);
window.getContentPane().add(outarea);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.getContentPane().setVisible(true)
String out = "foo";
outarea.setText(out);
//JOptionPane.showMessageDialog(null,window);
}
答案 0 :(得分:3)
JFrame
未出现的可能原因是因为这一行:
window.getContentPane().setVisible(true)
以上一行是设置已添加Container
的{{1}}的可见性,但不控制JTextArea
本身的可见性 - 因此,{ {1}}本身未显示。
(更准确地说,JFrame.getContentPane
方法返回JFrame
,因此上面的代码实际上是调用JFrame
的{{1}}方法。)
请尝试以下方法:
Container
这会将Containter
本身的可见性设置为可见。
此外,正如其他答案所示,请尝试使用Layout Managers来控制组件的显示位置。以下是使用两个可用于布局组件的布局管理器的链接。
答案 1 :(得分:2)
您应该使用一些布局管理器。这个链接可以帮助你:
http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html
标准的java布局管理器有时候很难处理。也许你也应该研究JGoodies:http://www.jgoodies.com/“框架”。它更容易使用,你意识到即使是一个java gui看起来也不错......
答案 2 :(得分:1)
首先 - 您是使用SwingUtilities.invokeLater(Runnable runnable);
还是SwingUtilities.invokeAndWait(Runnable runnable);
在事件调度线程上调用printResults?请记住,您需要在EDT上完成所有GUI工作。
如果是这样,试试这个:
JFrame window = new JFrame();
// CHANGES HERE
window.getContentPane().setLayout(new BorderLayout();
window.getContentPane().add(name, BorderLayout.NORTH);
window.getContentPane().add(outarea, BorderLayout.CENTER);
// END CHANGES