我目前正在上一个讲课的介绍。我们的任务是创建一个计算器GUI。我通过边框布局和网格布局的组合制作了所请求的GUI。 我不知道如何给按钮功能,但是通过讲义并看不到它。
我在网上看到的例子但看起来都一样,我认为它们没有帮助,因为我看过的人只使用一个按钮,我需要一种方法来区分我的按钮,因为每个按钮都有自己的操作。
注意 我不需要使用这个计算器的任何功能我只需要它来记录按钮点击,一旦我弄明白我将把它添加到字符串“输入”并保持用户的视觉效果。 IE如果用户(教师)点击需要显示在屏幕顶部的5 * 5,但我不需要25的答案。
这是我的代码,它运行并具有我想要的gui布局。
import javax.swing.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JPanel;
public class GUI extends JFrame implements ItemListener{ //ActionListener
//JTextArea info = new JTextArea("this will calculate numbers");
JTextField f1 = new JTextField(10); //param = width
protected String input;
//*****************************************************************************************************************
//constructor
//@ args String, Int, Int
public GUI(String title, int width, int height ){
//gui.pack() *try this later*
setBounds(500, 170, width, height);// sets location x,y on screen at start of program also sets size of GUI x,y
setTitle(title); //sets title of
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //needed else x wont close properly
createGUI();
}
//separate gui logic from other logic
public void createGUI(){
//set layout you plan to use
setLayout(new BorderLayout());
//add(info, BorderLayout.NORTH);
add(f1, BorderLayout.NORTH);
//CENTER********************************************************************************************************
JPanel center = new JPanel();
center.setLayout(new GridLayout(4,3));
center.add(new JButton("1"));
center.add(new JButton("2"));
center.add(new JButton("3"));
center.add(new JButton("4"));
center.add(new JButton("5"));
center.add(new JButton("6"));
center.add(new JButton("7"));
center.add(new JButton("8"));
center.add(new JButton("9"));
center.add(new JButton("0"));
center.add(new JButton("."));
center.add(new JButton("C"));
add(center, BorderLayout.CENTER);
//EAST**********************************************************************************************************
JPanel east = new JPanel();
east.setLayout(new GridLayout(6,1));
east.add(new JButton("+"));
east.add(new JButton("-"));
east.add(new JButton("x"));
east.add(new JButton("/"));
east.add(new JButton("%"));
east.add(new JButton("="));
add(east, BorderLayout.EAST);
}
//main
public static void main(String[] args){
GUI calculator = new GUI("GUI Calculator",300,250);
calculator.setVisible(true);//makes calculator gui visible *make this line last or close to last*
}
//Must do this method or else class must be made abstract
public void itemStateChanged(ItemEvent event){
}
}
答案 0 :(得分:2)
基本上,对于每个按钮,您需要为其指定一个ActionListener
,当用户激活该按钮时,会将其称为actionPerformed
方法。
就个人而言,我会使用Action
,这是一个自我继续的工作单元,但你可以使用内部类或匿名类,我会避免使用一个大的actionPerformed
方法,因为它变得困难随着时间的推移管理
有关详细信息,请参阅How to Write an Action Listeners,How to Use Actions和How to Use Buttons, Check Boxes, and Radio Buttons。
答案 1 :(得分:0)
您需要将ActionListener添加到按钮;)