1
如果我想將它的實現從我的GUI類中分離出來,我對理解ActionListener有點麻煩,我該怎麼做?該計劃是一個簡單的計算器。我試圖想到一個只有按鈕的GUI類(邊界),然後是一個處理所有動作事件(按下按鈕)的單獨類(Control)。我可以創建一個Control類型的私有變量並使其以這種方式工作嗎?請幫助,如果你知道:)Java,從ActionListener類中分離GUI
控制類
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.*;
import java.awt.*;
public class Boundary extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel northPanel;
private JPanel southPanel;
private Control control;
public Boundary()
{
super("Calculator");
getContentPane().setLayout(new BorderLayout());
northPanel = new JPanel(); northPanel.setLayout(new BorderLayout());
southPanel = new JPanel(); southPanel.setLayout(new GridLayout(4,4));
control = new Control();
JTextField numberField = new JTextField(20);
JTextField operationField = new JTextField(1);
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
JButton button3 = new JButton("3");
JButton button4 = new JButton("4");
JButton button5 = new JButton("5");
JButton button6 = new JButton("6");
JButton button7 = new JButton("7");
JButton button8 = new JButton("8");
JButton button9 = new JButton("9");
JButton button0 = new JButton("0");
JButton buttonequal = new JButton("=");
JButton buttonclear = new JButton("C");
JButton buttonplus = new JButton("+");
JButton buttonminus = new JButton("-");
JButton buttondivide = new JButton("/");
JButton buttonmultiply = new JButton("*");
button1.addActionListener(control);
button2.addActionListener(control);
button3.addActionListener(control);
button4.addActionListener(control);
button5.addActionListener(control);
button6.addActionListener(control);
button7.addActionListener(control);
button8.addActionListener(control);
button9.addActionListener(control);
button0.addActionListener(control);
buttonequal.addActionListener(control);
buttonclear.addActionListener(control);
buttonplus.addActionListener(control);
buttonminus.addActionListener(control);
buttondivide.addActionListener(control);
buttonmultiply.addActionListener(control);
northPanel.add(numberField, BorderLayout.CENTER);
northPanel.add(operationField, BorderLayout.EAST);
southPanel.add(button1);
southPanel.add(button2);
southPanel.add(button3);
southPanel.add(buttondivide);
southPanel.add(button4);
southPanel.add(button5);
southPanel.add(button6);
southPanel.add(buttonmultiply);
southPanel.add(button7);
southPanel.add(button8);
southPanel.add(button9);
southPanel.add(buttonminus);
southPanel.add(buttonclear);
southPanel.add(button0);
southPanel.add(buttonequal);
southPanel.add(buttonplus);
numberField.setVisible(true);
numberField.setEditable(false);
operationField.setVisible(true);
operationField.setEditable(false);
getContentPane().add(northPanel, BorderLayout.NORTH);
getContentPane().add(southPanel, BorderLayout.CENTER);
setLocation(300,300);
setSize(400,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
控制類
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class Control implements ActionListener {
private JButton button;
Control()
{
}
@Override
public void actionPerformed(ActionEvent arg0) {
}
}
1)不要在代碼中使用多於一個空白行的空格。 2)看看'Action'&'AbstractAction'。 3)不要擴展'JFrame'只是使用一個實例。 4)請參閱此[簡單示例](http://stackoverflow.com/a/7441804/418556)代碼的一個開始。 – 2013-03-14 01:23:56
正如所指出的那樣,行動更好,但是,它也應該像提出的一樣工作?! – 2013-03-14 01:27:38
D.R.我如何實現通過Control類單擊按鈕?我堅持要實施什麼行動? 安德魯湯普森,其要求我使用這些和擴展JFrame。我也會爲它清除白色空間,謝謝你的輸入 – Zac 2013-03-14 01:29:01