来自Jframe的Jpanel中的doClick()和SetText()

时间:2015-10-11 09:23:12

标签: java swing netbeans jframe jpanel

我是Java编程的新手。 我在Netbeans中开发了一个GUI(不幸的是使用了拖放)。

我创建了一个JFrame和两个JPanel(使用CardLayout)。

JFrame:

private void formKeyPressed(java.awt.event.KeyEvent evt) {                                
    int key=evt.getKeyCode();

    switch (key) {

            case 105: 
                UpdatePanel update=new UpdatePanel(105);
                break;

            case 97:
                CardLayout showPanel = (CardLayout) panelCard.getLayout();
                showPanel.show(panelCard, "Incasso");
                break;

            case 99:
                showPanel = (CardLayout) panelCard.getLayout();
                showPanel.show(panelCard, "Selezione");
                break;

因此,当我按下键码99时,它会显示panelCard "Selezione",并使用键码97,panelCard "Incasso"

这很正常。

使用键码105,它会调用类UpdatePanel

public class UpdatePanel {
  public UpdatePanel(int key){
    switch (key) {
        case 105:
            Selezione variabile= new Selezione();

            variabile.fascia.setText("io");

            break;
    }
}

此类的范围是更新面板内的组件。 在此示例中,我尝试更新作为面板"fascia"内部组件的文本字段"Selezione"

我编译的文件没有错误。当我按下按钮(代码105)时,类UpdatePanel被成功实例化,但fieldText "fascia"未在面板中更新。

我做错了什么?

我尝试了一些修改,但大多数代码是由拖放向导完成的,所以我没有直接访问权。

1 个答案:

答案 0 :(得分:0)

UpdatePanel看起来不是一个好的班级名称。对于方法名称,最好说doSomething。如果您打算编写负责更新面板的类,请将其命名为PanelUpdater

您可以将案例105写为

case 105: 
       fascia.setText("io");
       break;

如果您需要在课堂上执行此操作,请说PanelUpdater

public class PanelUpdater {
  public PanelUpdater (int key, JTextField field){
    switch (key) {
        case 105:
            field.setText("io");
            break;
    }
}

case 105: 
                PanelUpdater panelUpdater = new PanelUpdater (105, fascia);
                break;

但我不建议这种不必要地创建Object的方法。