我是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"
未在面板中更新。
我做错了什么?
我尝试了一些修改,但大多数代码是由拖放向导完成的,所以我没有直接访问权。
答案 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
的方法。