繁体   English   中英

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

[英]BorderLayout Form won't show not even with setsize

我是java swing的新手,我正在使用BorderLayout构建一个带菜单和JPanels的应用程序。 但是小组在这里不会显示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);

在这里,我使用Textfield构建Panel。

        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(...)将无效。
  • 如果可能,您应该避免设置尺寸和首选尺寸,而是让组件尺寸达到其自然尺寸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM