Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用JPanels时,如何将一个类中的用户输入数据显示给另一个类_Java_Swing_Jpanel - Fatal编程技术网

在java中使用JPanels时,如何将一个类中的用户输入数据显示给另一个类

在java中使用JPanels时,如何将一个类中的用户输入数据显示给另一个类,java,swing,jpanel,Java,Swing,Jpanel,我在这方面遇到了一些困难。基本上,我希望用户在一个Java类中输入一个名称,并在另一个Java类中显示该数据。我尝试使用gets,但总是得到“null”。如果我想从我的类(exampl)中得到一个int来显示在我的第二个类中,你会怎么做呢。基本上是一样的吗 这里有一个例子来说明我的意思 头等舱 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Exampl extends JFrame

我在这方面遇到了一些困难。基本上,我希望用户在一个Java类中输入一个名称,并在另一个Java类中显示该数据。我尝试使用gets,但总是得到“null”。如果我想从我的类(exampl)中得到一个int来显示在我的第二个类中,你会怎么做呢。基本上是一样的吗

这里有一个例子来说明我的意思

头等舱

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Exampl extends JFrame implements ActionListener {

    JLabel intro = new JLabel("Welcome What is your name?");
    JTextField answer = new JTextField(10);
    JButton button = new JButton("Enter");
    final int WIDTH = 330;
    final int HEIGHT = 330;
    JLabel greeting = new JLabel("");
    JButton next =new JButton("Next");
     String name = answer.getText();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public Exampl() {
        super("Welcome");
        setSize(WIDTH, HEIGHT);
        setLayout(new FlowLayout());
        add(intro);
        add(answer);
        add(button);
        add(greeting);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        button.addActionListener(this);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent event) {
        Object source = event.getSource();
        if (source == button) {
             String greet = "Hello there" + name;
             greeting.setText(greet);
              add(next);
       next.addActionListener(this);

           if(source==next)
            dispose();
            new Hello();
        }

    }


      public static void main(String[] args) {
        Exampl frame= new Exampl();
        frame.setVisible(true);

    }
}
二等舱

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Hello extends JFrame implements ActionListener {
    String name;
    JLabel hi = new JLabel("Nice to see you "+name);
    JButton button = new JButton("Enter");
    final int WIDTH = 330;
    final int HEIGHT = 330;
    JLabel greeting = new JLabel("");
    JButton next =new JButton("Next");

    public Hello() {
        super("Welcome");
        setSize(WIDTH, HEIGHT);
        setLayout(new FlowLayout());
        add(hi);
        add(button);
        add(greeting);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        button.addActionListener(this);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent event) {
        Object source = event.getSource();
        if (source == button) {
             String greet = "example " + name;
             greeting.setText(greet);
              add(next);
        }
    }

    public static void main(String[] args) {
        Exampl frame= new Exampl();
        frame.setVisible(true);           
    }        
}

在第一个类中创建一个getter并扩展第二个类,然后使用super.getter()

在第一个类中创建一个getter并扩展第二个类,然后使用super.getter()

我给你的建议是:

  • 不要扩展
    JFrame
    ,而是扩展
    JPanel
    。见:和
  • 不要使用多个
    JFrames
    。请参阅(坏的),您可能希望尝试使用或

  • 你所说的延伸是什么意思?你是说“公共课”吗?我是java新手,所以我知道的不多

  • 从对另一个答案的评论中,您可能希望先在控制台应用程序中学习基础知识,然后再进入GUI应用程序,这会增加程序的复杂性,从而增加您的学习
  • 我正在计划做一个项目,我把输入的名字和一个随机的int添加到一个文件中,这样我就可以存储它了。或者将代码添加到同一个类中更有意义

  • 根据该注释,您可以创建一个公共方法,该方法以您需要的格式返回
    JTextField
    中的值,然后从另一个类调用该方法,例如:

    public String getUserName() {
        return userNameField.getText();
    }
    
    public int getDigit() {
        try {
            return Integer.parseInt(digitField.getText());
        } catch (NumberFormatException nfe) {
            nfe.printStackTrace();
        }
        return -1; //In case it's not a number, or return 0, or whatever you need
    }
    
    //------In another class------//
    
    int digit = object1.getDigit(); //Where object1 is an instance of the other class where those methods are defined
    

  • 我给你的建议是:

  • 不要扩展
    JFrame
    ,而是扩展
    JPanel
    。见:和
  • 不要使用多个
    JFrames
    。请参阅(坏的),您可能希望尝试使用或

  • 你所说的延伸是什么意思?你是说“公共课”吗?我是java新手,所以我知道的不多

  • 从对另一个答案的评论中,您可能希望先在控制台应用程序中学习基础知识,然后再进入GUI应用程序,这会增加程序的复杂性,从而增加您的学习
  • 我正在计划做一个项目,我把输入的名字和一个随机的int添加到一个文件中,这样我就可以存储它了。或者将代码添加到同一个类中更有意义

  • 根据该注释,您可以创建一个公共方法,该方法以您需要的格式返回
    JTextField
    中的值,然后从另一个类调用该方法,例如:

    public String getUserName() {
        return userNameField.getText();
    }
    
    public int getDigit() {
        try {
            return Integer.parseInt(digitField.getText());
        } catch (NumberFormatException nfe) {
            nfe.printStackTrace();
        }
        return -1; //In case it's not a number, or return 0, or whatever you need
    }
    
    //------In another class------//
    
    int digit = object1.getDigit(); //Where object1 is an instance of the other class where those methods are defined
    

  • 是 啊我只是添加了第二个类来说明我的意思。我希望输入的任何值都能转到下一个JPanel。例如,如果有人在第一个类中写下“Fred”,我希望该值能够显示在第二个类上可能是Thank you的副本,这非常有用,因为它简化了事情,但我想知道如何将值移动到另一个类(如int)。我正在计划做一个项目,我把输入的名字和一个随机的int添加到一个文件中,这样我就可以存储它了。或者将代码添加到同一个类中更有意义吗?请阅读下面我答案的编辑。我只是添加了第二个类来说明我的意思。我希望输入的任何值都能转到下一个JPanel。例如,如果有人在第一个类中写下“Fred”,我希望该值能够显示在第二个类上可能是Thank you的副本,这非常有用,因为它简化了事情,但我想知道如何将值移动到另一个类(如int)。我正在计划做一个项目,我把输入的名字和一个随机的int添加到一个文件中,这样我就可以存储它了。或者将这些代码添加到同一个类中会更有意义吗?请阅读下面我的答案中的编辑您所说的扩展是什么意思?你是说“公共课”吗?我是java新手,所以我知道的不多。你说的扩展是什么意思?你是说“公共课”吗?我是java新手,所以我知道的不多。非常感谢。你帮了大忙,非常感谢。你帮了大忙。