JTextField 中无输出

No Output in JTextField

这是我第一次在 JAVA 中编写 GUI。我正在为我的项目尝试一个转换器程序,但是当我尝试 运行 该程序时我没有得到任何输出。我的代码不完整。

package Exams;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;

import java.awt.Font;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JTextArea;
import javax.swing.SwingConstants;
import javax.swing.JTextPane;
import javax.swing.DropMode;

public class Project {

private JFrame frame;
private JTextField txtEnterText;
JTextArea txtDisplay = new JTextArea(300,300);

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Project window = new Project();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public Project() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.getContentPane().setEnabled(false);
    frame.setBounds(100, 100, 262, 398);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    txtEnterText = new JTextField();
    txtEnterText.setBounds(10, 11, 226, 37);
    txtEnterText.setFont(new Font("Tahoma", Font.PLAIN, 18));
    txtEnterText.setHorizontalAlignment(SwingConstants.RIGHT);
    frame.getContentPane().add(txtEnterText);
    txtEnterText.setColumns(10);

    //ROW 1------------------------------------------------------------------------------

     final JButton btn7 = new JButton("7");
     btn7.setBounds(10, 59, 50, 50);
     btn7.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

            String EnterNumber = txtDisplay.getText() + btn7.getText();
            txtDisplay.setText(EnterNumber);
        }
     });
    btn7.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn7);

    final JButton btn8 = new JButton("8");
    btn8.setBounds(70, 59, 50, 50);
    btn8.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String EnterNumber = txtDisplay.getText() + btn8.getText();
            txtDisplay.setText(EnterNumber);
        }
    });
    btn8.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn8);

    final JButton btn9 = new JButton("9");
    btn9.setBounds(130, 59, 50, 50);
    btn9.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String EnterNumber = txtDisplay.getText() + btn9.getText();
            txtDisplay.setText(EnterNumber);
        }
    });
    btn9.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn9);

    JButton btndm = new JButton("dm");
    btndm.setBounds(190, 59, 50, 50);
    btndm.setFont(new Font("Tahoma", Font.BOLD, 11));
    frame.getContentPane().add(btndm);

    //ROW 2------------------------------------------------------------------------------

    final JButton btn4 = new JButton("4");
    btn4.setBounds(10, 119, 50, 50);
    btn4.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String EnterNumber = txtDisplay.getText() + btn4.getText();
            txtDisplay.setText(EnterNumber);
        }
    });
    btn4.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn4);

    final JButton btn5 = new JButton("5");
    btn5.setBounds(70, 119, 50, 50);
    btn5.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String EnterNumber = txtDisplay.getText() + btn5.getText();
            txtDisplay.setText(EnterNumber);
        }
    });
    btn5.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn5);

    final JButton btn6 = new JButton("6");
    btn6.setBounds(130, 119, 50, 50);
    btn6.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String EnterNumber = txtDisplay.getText() + btn6.getText();
            txtDisplay.setText(EnterNumber);
        }
    });
    btn6.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn6);

    JButton btncm = new JButton("cm");
    btncm.setBounds(190, 119, 50, 50);
    btncm.setFont(new Font("Tahoma", Font.BOLD, 11));
    frame.getContentPane().add(btncm);

    //ROW 3------------------------------------------------------------------------


    final JButton btn1 = new JButton("1");
    btn1.setBounds(10, 179, 50, 50);
    btn1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String EnterNumber = txtDisplay.getText() + btn1.getText();
            txtDisplay.setText(EnterNumber);
        }
    });
    btn1.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn1);

    final JButton btn2 = new JButton("2");
    btn2.setBounds(70, 179, 50, 50);
    btn2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String EnterNumber = txtDisplay.getText() + btn2.getText();
            txtDisplay.setText(EnterNumber);
        }
    });
    btn2.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn2);

    final JButton btn3 = new JButton("3");
    btn3.setBounds(130, 179, 50, 50);
    btn3.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String EnterNumber = txtDisplay.getText() + btn3.getText();
            txtDisplay.setText(EnterNumber);
        }
    });
    btn3.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn3);

    JButton btnmm = new JButton("mm");
    btnmm.setBounds(190, 179, 50, 50);
    btnmm.setFont(new Font("Tahoma", Font.BOLD, 10));
    frame.getContentPane().add(btnmm);

    //ROW 4---------------------------------------------------------------------- 

    final JButton btn0 = new JButton("0");
    btn0.setBounds(70, 239, 50, 50);
    btn0.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String EnterNumber = txtDisplay.getText() + btn0.getText();
            txtDisplay.setText(EnterNumber);
        }
    });
    btn0.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btn0);

    JButton btnkm = new JButton("km");
    btnkm.setBounds(10, 239, 50, 50);
    btnkm.setFont(new Font("Tahoma", Font.BOLD, 11));
    frame.getContentPane().add(btnkm);

    JButton btnmt = new JButton("mt");
    btnmt.setBounds(130, 239, 50, 50);
    btnmt.setFont(new Font("Tahoma", Font.BOLD, 11));
    frame.getContentPane().add(btnmt);

    JButton btn_microm = new JButton("micro_m");
    btn_microm.setBounds(190, 239, 50, 50);
    btn_microm.setFont(new Font("Tahoma", Font.BOLD, 11));
    frame.getContentPane().add(btn_microm);


    //ROW 5-----------------------------------------------------------------------

    JButton btnnm = new JButton("nm");
    btnnm.setBounds(10, 299, 50, 50);
    btnnm.setFont(new Font("Tahoma", Font.BOLD, 11));
    frame.getContentPane().add(btnnm);

    JButton btnmi = new JButton("mi");
    btnmi.setBounds(70, 299, 50, 50);
    btnmi.setFont(new Font("Tahoma", Font.BOLD, 13));
    frame.getContentPane().add(btnmi);

    JButton btnyd = new JButton("yd");
    btnyd.setBounds(130, 299, 50, 50);
    btnyd.setFont(new Font("Tahoma", Font.BOLD, 11));
    frame.getContentPane().add(btnyd);

    JButton btnft = new JButton("ft");
    btnft.setBounds(190, 299, 50, 50);
    btnft.setFont(new Font("Tahoma", Font.BOLD, 11));
    frame.getContentPane().add(btnft);

}
}

你不是说 txtDisplay,对吧?您的意思是 txtEnterText 在每个事件处理程序中。 运行 并查看正确显示的数字。

private JTextField txtEnterText;

您没有在 txtEnterText 中设置任何文本,这就是为什么您的 JTextField 是空的。您需要在 JTextField txtEnterText.

中设置文本

示例:

txtEnterText.setText("SOME TEXT");

but I am not getting any output when I try running the program

        String EnterNumber = txtDisplay.getText() + btn0.getText();
        txtDisplay.setText(EnterNumber);

根据上面的代码,您尝试将文本添加到 JTextArea,但您从未将 JTextArea 添加到框架,因此您永远看不到输出。

所以解决方案似乎是将文本区域添加到框架中,并删除您从未使用过的文本字段。

上述代码的其他问题:

  1. 变量名不应以大写字符开头。您的大部分变量都是正确的。保持一致!!!

  2. 要将文本添加到文本区域,您可以使用 append(...) 方法。

类似于:

txtDisplay.append(enterNumber);