我知道一些java,但我不熟悉任何类型的GUI开发。我做过的大多数事情都是通过终端运行的小程序。
在任何一种情况下,当我试图弄湿脚时,我发现自己陷入了以下代码:
public class MyGui {
public static void main(String[] args) {
JFrame frame = new JFrame("My Frame");
JPanel leftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
JPanel centerPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
JTextArea userField = new JTextArea("User:");
userField.setEditable(false);
JTextArea user = new JTextArea("myuser");
user.setEditable(true);
leftPanel.add(userField);
centerPanel.add(user);
frame.getContentPane().add(leftPanel);
frame.getContentPane().add(centerPanel);
frame.setVisible(true);
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
我基本上喜欢一个桌面窗口,左边是字段,右边是值。怎么办呢?
我当前的输出只是myuser
在我窗口的中心。
答案 0 :(得分:2)
您不需要两个面板。只有一个GridLayout就足够了:
public static void main(String [] args) {
JFrame frame = new JFrame("My Frame");
JPanel panel = new JPanel(new GridLayout(1,2)); // split the panel in 1 rows and 2 cols
JTextArea userField = new JTextArea("User:");
userField.setEditable(false);
JTextArea user = new JTextArea("myuser");
user.setEditable(true);
panel.add(userField);
panel.add(user);
frame.getContentPane().add(panel);
frame.setVisible(true);
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
答案 1 :(得分:2)
您的输出将是您要添加到容器的最后一个面板,因为JFrame
的默认布局为BorderLayout。
因此,getContentPane().add(panel)
将面板添加到CENTER。
另请参阅Why are the contents of my JFrame not displaying correctly?
问题的第二部分未指定使用哪种方式,您可以使用GridLayout到框架或主面板并将面板添加到容器中,还有其他方法。
希望您阅读有关LayoutManagers的更多信息,以便深入了解。