当我调用第二个类时,String i
不会打印到控制台(仅使用相关代码的片段)。
我做错了什么?
public class test1 {
static JTextField textField = new JTextField(10);
}
public static void main(String[] args) {
test2.main(args);
}
test2类:
public class test2 {
public static void main(String args[]) {
String i = test1.textField.getText();
System.out.println(i);
}
}
答案 0 :(得分:1)
您只是初始化JTextField
并且没有为其分配任何文本,因此您将获得一个空字符串作为输出。要解决这个问题,
替换
static JTextField textField = new JTextField(10);
通过
static JTextField textField = new JTextField(“The Default Text”);
现在每当您运行代码时,您将获得输出,因为The Default Text
将存储到i
。
完整的代码会显示一个带有文本字段的窗口,字符串我应该成为在文本字段中输入的内容
我无法在您的代码中看到任何显示JTextField
无论如何,要获得这种输出,你应该这样做:
// TEST1
public class test1{
static JTextField textField = new JTextField(10);
static JButton btn;
public static void main(String[] args) {
JFrame frame=new JFrame();
JPanel panel=new JPanel();
btn=new JButton("Show");
panel.add(textField);
panel.add(btn);
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn){
new test2();
}
}
});
frame.add(panel);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
// TEST2
public class test2 {
test2(){
String i = test1.textField.getText();
System.out.println("Text from textField:"+i);
}
}
<强>输出强>
来自textField的文字:嗨用户
答案 1 :(得分:0)
简而言之:您的textField没有文本,它是空的。
您应该设置一些默认文本,然后尝试。在这种情况下,您将打印默认文本而不是空文本。
但是,有接近问题!
您应该考虑静态textField用法,封装和OO原则。
尝试使用定义方法的值,这些方法将获得您需要的内容,或者使用内部类来处理文本字段的状态,或者至少over accessors / mutators。
在当前表示中,您可能会遇到很多问题,因为每个实例都可以处理值等...