gpt4 book ai didi

java - 即使使用 setsize,BorderLayout 表单也不会显示

转载 作者:行者123 更新时间:2023-12-02 06:05:31 38 4
gpt4 key购买 nike

我是 java swing 的新手,正在构建一个带有菜单和带有 BorderLayout 的 JPanel 的应用程序。但即使设置了 setSize,面板也不会显示,因为我在这里是红色的。这里我使用菜单将面板添加到框架中:

if (actionEvent.getActionCommand() == "Tarif Änderung") {
guiFrame.revalidate();
guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

TarifTextForm tarifForm =new TarifTextForm();
tarifForm.setVisible(true);

guiFrame.getContentPane().add(tarifForm);

//show the frame
guiFrame.pack();
guiFrame.setPreferredSize(new Dimension(500, 500));
guiFrame.setVisible(true);

在这里,我使用文本字段构建面板。

        tarifnameLbl=new JLabel();
tarifnameLbl.setText("Tarifname:");
tarifnameFld=new JTextField();
tarifnameFld.setText("Zum starten, bitte tippen");


betragLbl=new JLabel();
betragLbl.setText("Betrag:");
betragFld=new JTextField();
betragFld.setText("0,00");

JPanel p = new JPanel(new BorderLayout());

p.add(tarifnameLbl, BorderLayout.WEST);
p.add(betragLbl, BorderLayout.WEST);
p.add(tarifnameFld, BorderLayout.EAST);
p.add(betragFld, BorderLayout.EAST);

JPanel btnPanel = new JPanel();
JButton newBut =new JButton();
newBut.setText("Erstellen");
btnPanel.add(newBut);

JButton delBut=new JButton();
delBut.setText("Löschen");
btnPanel.add(delBut);

JButton chgBut=new JButton();
chgBut.setText("Ändern");
btnPanel.add(chgBut);

p.add(btnPanel, BorderLayout.SOUTH);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout(10,10));
panel.setSize(500,500);
panel.add(p, BorderLayout.CENTER);

我不明白问题出在哪里:(请帮忙。非常感谢!

最佳答案

此处错误:

if (actionEvent.getActionCommand() == "Tarif Änderung") {

不要使用 == 来比较字符串,而是使用 equals(...)equalsIgnoreCase(...) 方法代替。了解 == 检查两个对象是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,并且这才是重要的。所以而不是

if (fu == "bar") {
// do something
}

做,

if ("bar".equals(fu)) {
// do something
}

或者,

if ("bar".equalsIgnoreCase(fu)) {
// do something
}

或者您的程序:

if ("Tarif Änderung".equals(actionEvent.getActionCommand())) {
// ....
}
<小时/>

另请注意

  • 您正在对不需要的组件调用 setVisible(true)
  • 您在调用pack()之后在GUI上调用setPreferredSize(...),这是行不通的。
  • 如果可能,您应该避免设置尺寸和首选尺寸,而是让组件调整到其自然尺寸。

关于java - 即使使用 setsize,BorderLayout 表单也不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22325257/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com