Java 在另一个类中使用字符串

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(

我在做一个有两门课的课程。第一个仅用于程序的GUI。另一个是用所需数据创建新文件的代码

我想使用文本,用户在jTextField中写入文本。但我的问题是,我无法将文本保存在字符串中,然后在另一个类中用代码调用它来保存用户输入

因此,NetworkComponentFrame类中包含以下代码:

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”。问题出在哪里?