Java Jframe中Jpanel中的doClick()和SetText()
我是Java编程新手。 我在Netbeans中开发了一个GUI(不幸的是使用了拖放) 我创建了一个JFrame和两个JPanel(使用CardLayout) JFrame: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:
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;