borderlayout表单即使使用setsize也不会显示

2eafrhcq  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(352)

我是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);

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

0aydgbwb

0aydgbwb1#

此处出错:

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) 在不需要的组件上。
你在打电话吗 setPreferredSize(...) 调用后在gui上 pack() 这是行不通的。
如果可能的话,您应该避免设置尺寸和首选尺寸,而是让组件的尺寸调整为其自然尺寸。

相关问题