开始java swing,给按钮功能

时间:2015-03-29 07:20:40

标签: java swing function button

我目前正在上一个讲课的介绍。我们的任务是创建一个计算器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){

    }
}

2 个答案:

答案 0 :(得分:2)

基本上,对于每个按钮,您需要为其指定一个ActionListener,当用户激活该按钮时,会将其称为actionPerformed方法。

就个人而言,我会使用Action,这是一个自我继续的工作单元,但你可以使用内部类或匿名类,我会避免使用一个大的actionPerformed方法,因为它变得困难随着时间的推移管理

有关详细信息,请参阅How to Write an Action ListenersHow to Use ActionsHow to Use Buttons, Check Boxes, and Radio Buttons

答案 1 :(得分:0)

您需要将ActionListener添加到按钮;)