当前位置: 首页 > 知识库问答 >
问题:

如果我按下一个按钮,文本从按钮出现在我的文本区域

丌官和泰
2023-03-14

我开始用GUI制作Java计算器,但我遇到了一个问题。我是Java新手,如果我的问题很愚蠢,我很抱歉。我想知道如何正确地为Action Listener编写代码,这样我就可以按下一个按钮,并将该按钮上的文本显示在文本区域中。所有评论都是我试图做的,但没有成功。

package calculator;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class GUI extends JFrame {
    JButton Radical;
    JButton ImpartireLa1;
    JButton Inmultire;
    JButton Impartire;
    JButton Scadere;
    JButton Adunare;
    JButton Egal;
    JButton Zero;
    JButton Sapte;
    JButton Opt;
    JButton Noua;
    JButton Sase;
    JButton Cinci;
    JButton Patru;
    JButton Trei;
    JButton Doi;
    JButton Unu;
    StringBuilder tex;
    JTextField display;
    JLabel lol;

    GUI (){
        setTitle("Calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(1400,800);

        this.setLayout(null);

        Radical = new JButton("rad");
        Radical.setBounds(100,100,60,60);

        ImpartireLa1= new JButton("1/x");
        ImpartireLa1.setBounds(200,100,60,60);

        Inmultire= new JButton("*");
        Inmultire.setBounds(300,100,60,60);

        Impartire= new JButton("/");
        Impartire.setBounds(400,100,60,60);

        Scadere= new JButton("-");
        Scadere.setBounds(500,100,60,60);

        Adunare= new JButton("+");
        Adunare.setBounds(500,200,60,60);

        Egal= new JButton("=");
        Egal.setBounds(500,300,60,60);

        Sapte= new JButton("7");
        Sapte.setBounds(100,200,80,80);

        Opt= new JButton("8");
        Opt.setBounds(230,200,80,80);

        Noua= new JButton("9");
        Noua.setBounds(360,200,80,80);

        Patru= new JButton("4");
        Patru.setBounds(100,300,80,80);

        Cinci= new JButton("5");
        Cinci.setBounds(230,300,80,80);

        Sase= new JButton("6");
        Sase.setBounds(360,300,80,80);

        Unu= new JButton("1");
        Unu.setBounds(100,400,80,80);

        Doi= new JButton("2");
        Doi.setBounds(230,400,80,80);

        Trei= new JButton("3");
        Trei.setBounds(360,400,80,80);

        Zero= new JButton("0");
        Zero.setBounds(480,400,80,80);

        this.setLayout(null);

        display= new JTextField();
        display.setBounds(100,10, 465, 45);



 add(Trei); add(Doi);add(Unu);add(Patru);add(Cinci);        add(Sase);add(Sapte);add(Opt);add(Noua);add(Radical);add(ImpartireLa1);add(Inmultire); add(Impartire);add(Adunare);add(Scadere);add(Egal); add(Zero);add(display);setVisible(true);


        class Patru implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                //String s= text.getText()+ Patru.getText();
                //text.setText(s);
                     /// text.setText( getText(4) );

                /*JButton Patru = (JButton)e.getSource();
                if(Patru.getText().equals("4"))
                    display.setText("");
                lol.setVisible(true); */

                /*if(e.getSource() == Patru)
                {
                    String s = "4";
                    display.setText(s);

                }*/

                /* JButton Patru = (JButton)e.getSource();
                    String text = Patru.getText();
                    Object tex;
                    if (text.equals("4")) {
                        doMath math = new doMath();
                        int result = math.doMath1(tex.toString());
                       tex = new StringBuilder(32);

                    } else {
                        ((StringBuilder) tex).append(text);
            }*/
            /*  String text = "4";
                if(e.getSource() == Patru)
                {
                    text += "4";
                    display.setText(text);
                }
            }*/
}
            }
    class Cinci implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub

        }

        public void ActionPerformed(ActionEvent e1)
        {
            String s1= display.getText()+ Cinci.getText();
            display.setText(s1);
        }

    }
    }



    public static void main(String[] args)
    {
            GUI Calculator= new GUI();  
    }
}

共有2个答案

潘自强
2023-03-14

首先:在构造函数方法之外定义ActionListener类。

第二:将您的ActionListener实例添加到您的每个JButton

Radical.addActionListener(new Patru());

第三:像这样实现actionPerformed方法:

public void actionPerformed(ActionEvent e) {
    JButton src = (JButton)e.getSource();
    display.setText(src.getText());
}
公羊渝
2023-03-14

答案相当简单:

>

  • JButton中的文本可以用button.setText("sometext")设置,并且可以使用String content=button.getText()来查询相同的文本。
  • 要使用ActionListener,您可以将接口添加到JFrame中,如下所示:公共类GUI扩展JFrame实现ActionListener{您只需将实现ActionListener添加到现有行中。
  • 现在,您需要使用button.addActionListener(this)将ActionListener添加到您的按钮注意:在创建新的Button对象之后立即添加Action Listener非常重要。
  • 您需要做的最后一件事是告诉ActionListener在单击按钮时应该做什么。所以您需要在GUI类中创建一个方法:

    @凌驾

    已执行的公共无效行动(行动事件e){

    textfield.set文本(button.get文本());

    }

    这基本上就是当你点击一个按钮时,你需要改变JTextField中文本的全部内容。

  •  类似资料:
    • 早上好。因为我的flatButton已被弃用,所以我尝试将其转换为TextButton。但是现在不行了。 这是我的工作平面按钮代码: 这是转换为Textbutton的代码:

    • 我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检

    • 目前正在学习我自己 JavaFX。 我使用场景生成器创建了一个带有按钮和文本字段的简单场景。 为什么我不能点击按钮,并从文本字段中获取文本? FXML代码是:

    • !define MUI_PAGE_CUSTOMFUNCTION_SHOW "CompShowProc" !insertmacro MUI_PAGE_COMPONENTS ;组件选择页面 Function "CompShowProc" GetDlgItem $R0 $HWNDPARENT 1 SendMessage $R0 ${WM_SETTEXT} 0 `STR:小黑` ;下一步按键

    • 如果我按下呼叫按钮,我会得到一个错误,即出租车没有呼叫,而是转到另一个窗口。 我认为这个错误来自实时数据库。如果你有不同的意见,写下你的答案。 错误:E/AndroidRuntime:致命异常:主进程:com。实例乌兹别克斯坦,PID:8915爪哇。lang.NullPointerException:尝试调用虚拟方法“double android”。地方地方getLatitude()'位于com上

    • 在我的APCS课程中,我们正在学习如何编写GUI。我们已经学习了如何制作按钮和将背景色改为绿色、红色、蓝色等。然而,我的老师在这周剩下的时间里不会在这里,我只是好奇如何通过单击按钮使文本出现在框架内,并在再次单击按钮时使文本消失。如果有帮助,下面是代码。我想改变背景颜色为绿色以及显示“绿色”在屏幕上。非常感谢你的帮助! }