我一直遇到一些困难。基本上我希望用户在一个Java类中输入一个名称,并将该数据显示在另一个Java类中。我尝试使用获取,但我一直得到' null'。如果我想从我的类(例如)中获取一个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);
}
}
答案 0 :(得分:2)
我给你的建议:
JFrame
,而是展开JPanel
。请参阅:Extends Frame
vs creating it inside the program和Why shouldn't you extend JFrame
and other components JFrames
。请参阅The use of multiple JFrames
, good / bad practice?( BAD ),而您可能想尝试使用Card Layout或JDialog
s 延伸是什么意思?你的意思是“公共课Hello扩展Exampl”?我是java的新手,所以我不太了解。
我打算做一个项目,我将输入的名称和随机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
答案 1 :(得分:0)
在第一个类中创建一个getter并扩展第二个类然后使用super.getter();