JTextArea字符串不会打印到我的控制台?

时间:2015-01-16 03:41:08

标签: java swing methods awt

我试图这样做,当我按下按钮时,我的JTextArea中的内容将通过System.out.print方法打印出来,但是有些事情是不对的。这是我的代码:

public static void text(){
     JButton jb = new JButton("Button");
     final String s;
     JFrame frame = new JFrame();
     t1= new JTextArea(3,10);
     s=t1.getText();

     ActionListener al = new ActionListener(){

        @Override
        public void actionPerformed(ActionEvent e) {

            System.out.print(s);
        }
     };

    jb.addActionListener(al);
    jp.add(jb);
    jp.add(t1);
    frame.add(jp);
    frame.setTitle("Card");  
    frame.setSize(700,500);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.setVisible(true);
  }

public static void main(String [ ] args){
    text();
}

1 个答案:

答案 0 :(得分:3)

当您撰写s=t1.getText()时,这并不意味着s始终包含t1中的文字。这意味着将s设置为任何文本t1现在包含 (即,当执行该行时,在您的情况下是在设置GUI时)。

您可能希望在按下按钮时获取文本:

@Override
public void actionPerformed(ActionEvent e) {
    // System.out.print(s); <- delete this
    System.out.print(t1.getText());
}

您还可以删除与s相关的所有内容,因为它未被使用。