谁能告诉我哪里出了问题?

时间:2014-02-15 22:31:10

标签: java swing

当我调用第二个类时,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);
    }
}

2 个答案:

答案 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);

    }
}

<强>输出

output

来自textField的文字:嗨用户

答案 1 :(得分:0)

简而言之:您的textField没有文本,它是空的。

您应该设置一些默认文本,然后尝试。在这种情况下,您将打印默认文本而不是空文本。

但是,有接近问题!

您应该考虑静态textField用法,封装和OO原则。
尝试使用定义方法的值,这些方法将获得您需要的内容,或者使用内部类来处理文本字段的状态,或者至少over accessors / mutators。

在当前表示中,您可能会遇到很多问题,因为每个实例都可以处理值等...