Java Jframe中Jpanel中的doClick()和SetText()

Java Jframe中Jpanel中的doClick()和SetText(),java,swing,netbeans,jframe,jpanel,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:

我是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;
因此,当我按keycode 99时,它会显示panelCard
“Selezione”
,按keycode 97时,panelCard
“Incasso”

这工作正常

使用keycode105,它调用类
UpdatePanel

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

            variabile.fascia.setText("io");

            break;
    }
}
此类的作用域是更新面板内的组件。 在这个示例中,我尝试更新文本字段
“封檐带”
,它是面板
“Selezione”
中的一个组件

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

我做错了什么


我尝试了一些修改,但大部分代码是由拖放向导生成的,因此我没有直接访问权限。

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;
    }
}


但是我不推荐不必要地创建
对象的这种方法。

您使用的是一个新的Selezione()对象,它只能在switch case的范围内访问。为什么不使用初始的Selezione对象呢?当我发现如何解决这个问题时,在UpdatePanel类中,我还必须添加doClick()来模拟Panelssory中按钮的压力Yassin,我不理解你的答案,,,fieldtext封檐带在Selezione类(包含jpanel)“doClick()中是公共的而Jframe的Jpanel中的SetText()作为旁白,该标题建议代码
扩展Jframe
扩展Jpanel
,而它实际上也不应该扩展。为了更快地获得更好的帮助,请发布or。其他问题:您使用的是KeyListener,这是Swing GUI通常应该避免的,并且您使用的是“神奇”数字,硬编码数字对于查看您的代码的人来说很难理解。
case 105: 
                PanelUpdater panelUpdater = new PanelUpdater (105, fascia);
                break;