我對我的程序有一個疑問,程序包含一個類Calculator
,它應該實現一個計算器,它能夠以+
和*
的類型double
進行操作。GUI中的ActionListener。功能不起作用
我寫了一個GUI爲計算器,太,它已經能正常工作,但按鈕不起作用,雖然我已經實現的功能
public void actionPerformed(ActionEvent e)
的錯誤必須在這個地方功能我猜。我只是不知道爲什麼按鈕的功能不起作用。這是代碼。
public class Calculator extends JFrame implements ActionListener {
Calculator() {}
JTextField parameter1;
JTextField parameter2;
JTextField ergebnis;
JFrame window;
Container cont;
/* this function works fine */
public void calculator_GUI() {
builds the GUI of the calculator,
this.window = new JFrame("Calculator");
window.setSize(300,300);
this.parameter1 = new JTextField("Parameter1...", 10);
parameter1.addActionListener(this);
this.parameter2 = new JTextField("Parameter1...", 10);
parameter2.addActionListener(this);
this.ergebnis = new JTextField("Ergebnis...", 5);
ergebnis.addActionListener(this);
JButton multiplizieren = new JButton("*");
parameter1.addActionListener(this);
JButton addieren = new JButton("+");
parameter1.addActionListener(this);
JButton clear = new JButton("clear");
parameter1.addActionListener(this);
this.cont = window.getContentPane();
FlowLayout flowLayout = new FlowLayout(FlowLayout.RIGHT);
cont.setLayout(flowLayout);
cont.add(parameter1);
cont.add(parameter2);
cont.add(ergebnis);
cont.add(multiplizieren);
cont.add(addieren);
cont.add(clear);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);;
}
public void actionPerformed(ActionEvent e) {
String label = e.getActionCommand();
if (label.equals("*")) {
String a = parameter1.getText();
String b = parameter2.getText();
double zahl1=Double.parseDouble(a);
double zahl2=Double.parseDouble(b);
double result = zahl1*zahl2;
String c = String.valueOf(result);
ergebnis.setText(c);
}
else if (label.equals("+")) {
String a = parameter1.getText();
String b = parameter2.getText();
double zahl1=Double.parseDouble(a);
double zahl2=Double.parseDouble(b);
double result = zahl1+zahl2;
String c = String.valueOf(result);
ergebnis.setText(c);
}
else if (label.equals("clear")) {
String z = "";
ergebnis.setText(z);
}
else {
window.dispose();
}
}
public static void main (String[] args) {
Calculator MyCalculator = new Calculator();
MyCalculator.calculator_GUI();
}
}
「*它已經工作得很好,但按鈕不起作用*」 - 那麼它不很好地工作: D – Maroun
1)對代碼塊使用一致的邏輯縮進。代碼的縮進旨在幫助人們理解程序流程。 2)不要延長框架或其他頂層容器。而是創建並使用一個實例。 –
定義「不起作用」。處理程序中的斷點命中了嗎?怎麼了? –