我是JavaSwing的新手,我正在构建一个带有菜单和带有borderlayout的JPanel的应用程序。但面板将不会显示,甚至与设置大小,因为我在这里红色。在这里,我将面板添加到带有菜单的框架中:
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);
这里我用textfield构建面板。
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);
我不明白问题出在哪里:(请帮忙。谢谢!
1条答案
按热度按时间0aydgbwb1#
此处出错:
不要使用
==
比较字符串,而不是使用equals(...)
或者equalsIgnoreCase(...)
方法。了解==检查两个对象是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的重点。所以是的,
或者,
或者你的节目:
还要注意的是
你在打电话吗
setVisible(true)
在不需要的组件上。你在打电话吗
setPreferredSize(...)
调用后在gui上pack()
这是行不通的。如果可能的话,您应该避免设置尺寸和首选尺寸,而是让组件的尺寸调整为其自然尺寸。