[英]Java GUI using Netbeans
如果我在Frame
代码中编写此命令以便在另一个框架中的TextField
中设置文本,则在文本.setText
使用.setText
编写东西时会遇到问题,众所周知,Netbeans预加载GUI中的TextFields
具有私有方法 。 任何克服这个问题的建议
我调用另一个框架在其中编写代码的代码,
private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt){
Tx_Customize l= new Tx_Customize();
env_region = jComboBox2.getSelectedIndex();
l.LF();
System.out.println(env_region);
}
另一帧在哪里
public void LF(){
envi = S.env_region;
System.out.println(envi);
switch (envi)
{
case 1:
Penetration.setText("21.5");
LNF.setText("10");
System.out.println("error1");
break;`
case 0:
Penetration.setText("16.5");
LNF.setText("8");
System.out.println("error0");
break;
case 2:
Penetration.setText("11");
LNF.setText("6");
System.out.println("error2");
break;
case 3:
Penetration.setText("7");
LNF.setText("6");
System.out.println("error3");
break;
default : System.out.println("error");break;
}
}
这与Swing无关,并且与一般的OOP惯例和Java没有关系:如果您需要允许一个类能够更改第二类的状态,请给第二类提供公共方法,以便第一类的对象可以呼叫。 如果需要调用私有方法,则可以包括包装方法。
要获得更详细的答案,则必须提出更详细的问题,其中包括相关代码。
编辑关于您的评论:
代码输入了它,但实际上并没有在第二帧的“ penetration and LNF”文本字段中写入任何内容,但是无论我从组合框中选择哪种情况,它都会显示System.out.println(“ error”)在第一帧中...我想因为这些在预加载的代码中是私有的,所以您知道一种方法吗
不,这与公共或私有绝对无关,而与代码中的错误有关。 如果是访问问题,您的代码将无法编译。 您的问题可能在这里:
private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt)
{
Tx_Customize l= new Tx_Customize(); // *********
env_region = jComboBox2.getSelectedIndex();
l.LF();
System.out.println(env_region);
}
您正在创建一个全新的Tx_Customize,在其上调用方法,并期望它可以神奇地更改另一个Tx_Customize对象(显示的对象),而Java无法以这种方式工作-这是没有魔术的。 如果要更改显示的Tx_Customize对象的状态,则必须在此对象上调用方法,而不是在此方法中创建的某些新Tx_Customize。
编辑2
其他一般问题:
编辑3
您声明:
所以你的意思是我应该通过以下方式调用LF方法:Tx_Customize.LF();
哎呀 这将要求该方法是静态的。 我建议您以某种方式获取对实际显示的其他对象的引用,并从中调用该方法。 如何获得该参考将取决于很多事情,包括您未向我们展示的代码。
编辑4
你问:
我想问一个问题@HoverCraftFullOfEels,该引用的主要用途是什么,因为这是我第一次听到它
您的问题(我相信-但我不能肯定地说,因为我们只看到了有限的代码)是由于您存在多个Tx_Customize对象。 我猜想Tx_Customize扩展了JFrame,并且您已经显示了其中之一。 然后,在jComboBox2ActionPerformed方法中,创建第二个Tx_Customize实例并尝试在其上调用方法,但这不会对原始Tx_Customize对象产生影响。 相反,您必须在实际显示的Tx_Customize对象上调用一个方法。
请理解,变量与对象不是同一回事,并且引用(非原始)变量只能引用对象。 这就是我所说的参考 。 您需要在其上调用LF()
的变量(尽管您实际上应该重命名此方法)才能引用实际显示的Tx_Customize对象。
为此,保存jComboBox2ActionPerformed方法的类必须具有引用显示的Tx_Customize的变量。 再次,请参见我对类似问题的答案,您可以在这里找到,它显示了一个示例,即通过构造函数参数获取引用,然后在变量中调用在事件中保留引用的方法,驱动设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.