【问题标题】:Printing on screen in Java using Swing's JTextField [duplicate]使用 Swing 的 JTextField 在 Java 屏幕上打印 [重复]
【发布时间】:2012-11-01 08:23:09
【问题描述】:

可能重复:
How to print the user input on screen from a TextField using Java Swing

请看下面的代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

    public class Swingtest extends JFrame implements ActionListener{
    JTextField txtdata;
    JButton calbtn = new JButton("Calculate");

    public Swingtest()
    {
        JPanel myPanel = new JPanel();
        add(myPanel);
        myPanel.setLayout(new GridLayout(3, 2));
        myPanel.add(calbtn);
        calbtn.addActionListener(this);
        txtdata = new JTextField();
        myPanel.add(txtdata);
    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == calbtn) {
            String data = txtdata.getText(); //perform your operation
            System.out.println(data);
        }
    }

    public static void main(String args[])
    {
        Swingtest g = new Swingtest();
        g.setLocation(10, 10);
        g.setSize(300, 300);
        g.setVisible(true);
    }
}

我想要做的是在同一个窗口中显示用户在字段中输入的文本。当文本更改时,有点像 paint(Graphics g) 和 repaint()。请帮忙。谢谢。

【问题讨论】:

  • 是的。这样做是因为我最初关注该帖子

标签: java swing user-interface actionlistener jtextfield


【解决方案1】:

添加一个 JLabel、JTextField、JTextArea 或任何能够显示文本的组件。获取用户输入文本的 JTextField 的文档,并在该文档中添加 DocumentChangeListener。每次收到 DocumentEvent 时,从 JTextField 获取文本并更新 JLabel、JTextField、JTextArea 或您选择的任何组件中的文本。

【讨论】:

  • 好的,所以我不能使用类似的东西: void paint(Graphics g){ //打印它? }
  • 您可以设计自己的 Swing 组件来显示一行文本,但您为什么要这样做,因为已经存在这样做的标准组件?
  • 请给个示例代码
【解决方案2】:

这可以通过重定向 I/O/E 流来完成:

我会给你一个详细的答案,但为这个问题选择的答案的回答者解释得更好。

看到这个问题:How could I read Java Console Output into a String buffer

将其读入 StringBuffer 后,您可以将其打印到 JTextField 或 JTextArea.. 等上

【讨论】:

    猜你喜欢
    • 2013-04-19
    • 1970-01-01
    • 2014-01-13
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多