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

JTextArea string won't print to my console?

我正在努力做到这一点,当我按下一个按钮时,我的 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();
}

当您写 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 有关的所有内容,因为它未被使用。