我一直在制作一个 GUI 计算器,但我遇到了一个问题。我知道我的代码仅限于“2”按钮,但那是因为我删除了所有数字,因此代码可以更短地放在此处。当我按下 2 时,我知道 Actionlistener 已激活,因为 System.out.println 将打印出 2。但它不会出现在我的文本字段中,我哪里出错了?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.Random;
import java.awt.FlowLayout;
public class CalculatorY {
public static JPanel panel = new JPanel(new GridLayout(5, 5));
public static JButton one, two, three, four, five, six, seven, eight, nine, zero, equal;
public static JTextField result;
public static boolean add, sub, mult, div;
public static void main(String[] args) {
JFrame frame = new JFrame("Rohini and Sonika's Calculator");
result = new JTextField(null,90);
two = new JButton("2");
equal = new JButton("=");
two.addActionListener(new button());
panel.setLayout(new GridLayout(5, 5, 5, 25));
panel.setLayout(new FlowLayout());
panel.add(result, BorderLayout.NORTH);
panel.add(two);
frame.setVisible(true);
frame.setSize(200, 400);
frame.setResizable(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(panel);
}
public static class button implements ActionListener {
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
String text = result.getText();
int textLength = text.length();
String letterValueOne = null;
String letterValueTwo = null;
boolean operation = false;
if (operation == false) {
if (letterValueOne == null) {
letterValueOne = "2";
System.out.println(letterValueOne);
result.setText(letterValueOne);
} else {
letterValueOne = letterValueOne + "2";
result.setText(letterValueOne);
}
} else {
if (letterValueTwo == null) {
letterValueTwo = "2";
} else {
letterValueTwo = letterValueTwo + "2";
}
}
}
}
}
最佳答案
它确实在文本字段中放置了一个 2!您可以通过单击文本字段,按 Ctrl-A,然后按 Ctrl-C,然后粘贴到其他地方来查看。
new JTextField(null, 90)
创建一个足以容纳 90 个字符的文本字段,但这比框架宽(至少在我的系统上是这样),所以它在双方。如果最大化框架,您应该看到 2。
一些可能的解决方案是:
让框架变大。请注意,您无法预测“90 列”在其他计算机上的宽度,因此您无法知道多大才足够大。
缩小文本字段。这有同样的问题。
最后调用
frame.pack();
。这使得框架足够大以容纳其中的所有组件。FlowLayout
会将它们排成一行;您可能想返回使用BorderLayout
。
关于java - 文本未出现在 GUI 计算器的 TextField 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29054881/