Java 在另一个类中使用字符串
我在做一个有两门课的课程。第一个仅用于程序的GUI。另一个是用所需数据创建新文件的代码 我想使用文本,用户在jTextField中写入文本。但我的问题是,我无法将文本保存在字符串中,然后在另一个类中用代码调用它来保存用户输入 因此,NetworkComponentFrame类中包含以下代码:Java 在另一个类中使用字符串,java,class,object,user-interface,Java,Class,Object,User Interface,我在做一个有两门课的课程。第一个仅用于程序的GUI。另一个是用所需数据创建新文件的代码 我想使用文本,用户在jTextField中写入文本。但我的问题是,我无法将文本保存在字符串中,然后在另一个类中用代码调用它来保存用户输入 因此,NetworkComponentFrame类中包含以下代码: public class NetworkComponentFrame extends javax.swing.JFrame { /* GUI Code */ public static void main(
public class NetworkComponentFrame extends javax.swing.JFrame {
/* GUI Code */
public static void main(String args[]) {
String ID = jTextField1.getText();
/* other code */
}}
public class NetworkComponent {
public static void New(){
NetworkComponentFrame ID = new NetworkComponentFrame();
/*other code */}}
而在NetworkComponent类中,目前有以下代码:
public class NetworkComponentFrame extends javax.swing.JFrame {
/* GUI Code */
public static void main(String args[]) {
String ID = jTextField1.getText();
/* other code */
}}
public class NetworkComponent {
public static void New(){
NetworkComponentFrame ID = new NetworkComponentFrame();
/*other code */}}
这些名称只是一些占位符。我希望这些信息足以帮助我解决问题。您可以通过创建构造函数NetworkComponent或NetworkComponentFrame类的静态属性来传递值。 e、 g 在你的第二节课上
public class NetworkComponent {
public static void New(){
s.o.p(NetworkComponentFrame.ID);
/*other code */}}
我想你想要的是另一种方式。在GUI中实例化
NetworkComponent
,在NetworkComponent
中使用setter方法,并使用文本字段中的文本设置NetworkComponent
对象中的文本
public class NetworkComponent {
String ID;
public void setId(String text){
ID = text;
}
}
public class NetworkComponentFrame extends javax.swing.JFrame {
NetworkComponent network = new NetWorkComponent(); <-- NetworkComponent object
JButton button = new JButton();
JTextField textField = new JTextField();
public NetworkComponentFrame(){
button.addActionListener(new ActionListener(){
public actionPerformed(ActionEvent e){
String text = textField.getText();
network.setId(text); <-- set the ID here
}
});
}
}
公共类网络组件{
字符串ID;
公共void setId(字符串文本){
ID=文本;
}
}
公共类NetworkComponentFrame扩展了javax.swing.JFrame{
NetworkComponent network=new NetworkComponent();如果我理解正确,您可以在main函数外定义字符串ID,但在NetworkComponentFrame类中定义为public,这样您可以在从类创建对象后,在任何地方访问它
例如:
公共类NetworkComponentFrame扩展了javax.swing.JFrame{
公共字符串ID_文本;
/*图形用户界面代码*/
公共静态void main(字符串参数[]){
ID_text=jTextField1.getText();
/*其他代码*/
}}
公共类网络组件{
公共静态void New(){
NetworkComponentFrame ID=新的NetworkComponentFrame()<
字符串测试=ID.ID\u文本;
/*其他代码*/}
您的示例代码有问题。您确定要在非静态对象中调用public static void main函数吗
扩展:你也可以使用getter和setter。也许可以为可以在其他类中调用的字符串创建一个公共getter/setter?我知道这听起来很有趣,但老师说了,我必须这样做:/但是无论如何,谢谢告诉你的老师,这是一个糟糕的设计,在模型中实例化你的视图/控制器代码>应该是另一种方式。看看他/她说了什么。这对我帮助很大,但如果我只是在NetworkComponentFrame类中执行System.out.println(ID\u text)->输出是正确的。但是在另一个类中输出是“null”。问题出在哪里?