我似乎无法让JButton使用2个JTextField, 我的目标是:
1.如果应用程序启动且用户没有聚焦(选择)JTextField:如果用户按下JButton,则追加到JTextField tf [0]。
2.如果JTextField tf [0]被聚焦(选择)&用户按下JButton b [0]而不是将数字附加到tf [0]。
3.如果JTextField tf [1]被聚焦(选择)&用户按下JButton b [0]而不是将数字附加到tf [1]。
这是我的代码, 我尝试使用Only ActionListener&而不是添加MouseListener而不是将其更改为MouseAdapter,但大多数时候,目标2或目标3不是同时实现两个或全部3个目标。
package swingapp;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class SwingApp {
JFrame CalcF;
JPanel p1, p2, p3;
JLabel j[] = new JLabel[3];
JButton b[] = new JButton[12];
JButton op[] = new JButton[4];
JTextField tf[] = new JTextField[3];
boolean selected = false;
Actions a;
Mouse m;
SwingApp() {
a = new Actions();
m = new Mouse();
CalcF = new JFrame("Calculator");
CalcF.setLocationRelativeTo(null);
CalcF.setSize(300, 300);
CalcF.setLayout(null);
CalcF.setResizable(false);
p1 = new JPanel();
p2 = new JPanel();
p3 = new JPanel();
p1.setLayout(null);
p1.setBounds(10, 10, 275, 55);
p1.setBackground(Color.LIGHT_GRAY);
tf[0] = new JTextField(5);
tf[1] = new JTextField(5);
tf[2] = new JTextField(5);
tf[0].setBounds(5, 25, 70, 20);
tf[1].setBounds(85, 25, 70, 20);
tf[2].setBounds(185, 25, 70, 20);
tf[2].setEditable(false);
j[0] = new JLabel("Number1");
j[0].setFont(new Font("SanSerif", Font.BOLD, 14));
j[0].setBounds(5, 5, 100, 20);
j[1] = new JLabel("Number2");
j[1].setFont(new Font("SanSerif", Font.BOLD, 14));
j[1].setBounds(85, 5, 100, 20);
j[2] = new JLabel("Result");
j[2].setFont(new Font("SanSerif", Font.BOLD, 14));
j[2].setBounds(185, 5, 100, 20);
for (int i = 0; i < 3; i++) {
p1.add(tf[i]);
p1.add(j[i]);
}
p2.setLayout(new GridLayout(4, 4));
p2.setBounds(85, 75, 125, 125);
b[10] = new JButton("c");
b[11] = new JButton("s");
b[10].setToolTipText("Clear all Fields");
b[11].setToolTipText("Save Your Result");
for (int i = 9; i >= 0; i--) {
b[i] = new JButton(String.valueOf(i));
p2.add(b[i]);
}
tf[0].addMouseListener(m);
b[0].addActionListener(a);
p2.add(b[10]);
p2.add(b[11]);
p3.setBounds(15, 210, 255, 35);
p3.setBackground(Color.lightGray);
op[0] = new JButton("Add");
op[1] = new JButton("Sub");
op[2] = new JButton("Mul");
op[3] = new JButton("Div");
for (int i = 0; i < 4; i++) {
p3.add(op[i]);
}
CalcF.add(p1);
CalcF.add(p2);
CalcF.add(p3);
CalcF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CalcF.setVisible(true);
}
public static void main(String[] args) {
new SwingApp();
}
class Mouse extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
if (tf[0].isFocusOwner()) {
selected = false;
} else if (tf[1].isFocusOwner()) {
selected = true;
}
}
}
class Actions implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (b[0].isFocusOwner()) {
if (selected) {
tf[0].setText(tf[0].getText() + "0");
}
}
}
}
}
这是一个简单的计算器应用程序,我正在努力。 经过一天的搜索后,我无法在stackoverflow或google中的任何地方找到解决方案。