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

当我按下一个JButtons时,我希望计算器的整数改变

公良泰宁
2023-03-14

我有一个名为input的整数,它被转换为字符串字符串,我有我的一个按钮。AddActionListener集和公共void actionPerformed(ActionEvent e){

如果(e.getsource()==oneButton){

//everything is imported

public class Ken implements ActionListener{


static JButton oneButton = new JButton("1");
static JButton twoButton = new JButton("2");
static JButton threeButton = new JButton("3");
static JButton fourButton = new JButton("4");
static JButton fiveButton = new JButton("5");
static JButton sixButton = new JButton("6");
static JButton sevenButton = new JButton("7");
static JButton eightButton = new JButton("8");
static JButton nineButton = new JButton("9");
static JButton zeroButton = new JButton("0");
static JButton minusButton = new JButton("-");
static JButton timesButton = new JButton("*");
static JButton enterButton = new JButton("=");
static JButton dividButton = new JButton("/");
static JButton plusButton = new JButton("+");
public static int input = 0;    


public Ken(){

    JFrame frame = new JFrame("MyCalc");


    String string = ""+input;

    JTextField text = new JTextField(string, 9);
    frame.setSize(476, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setResizable(false);
    FlowLayout fl = new FlowLayout(0, 30, 20);
    setLayout(fl);
    Border empty;
    empty = BorderFactory.createEmptyBorder();

    frame.getContentPane().setLayout(fl);

    Container con = frame.getContentPane();
    con.setBackground(Color.LIGHT_GRAY);
    Font f = new Font("MS UI Gothic", Font.BOLD, 40);
    Font f2 = new Font("Engravers MT", Font.PLAIN, 40);
    int bHeight = 80;
    int bWidth = 70;
    text.setBackground(Color.GREEN);
    text.setFont(f2);
    text.setPreferredSize(new Dimension(bHeight, bWidth));
    text.setEditable(false);


    frame.add(text, BorderLayout.NORTH);

    oneButton.setPreferredSize(new Dimension(bHeight, bWidth));
    oneButton.setBackground(Color.DARK_GRAY);
    oneButton.setForeground(Color.GREEN);
    oneButton.setFont(f);
    oneButton.addActionListener(new Evt());
    frame.add(oneButton);

    twoButton.setPreferredSize(new Dimension(bHeight, bWidth));
    twoButton.setBackground(Color.DARK_GRAY);
    twoButton.setForeground(Color.GREEN);
    twoButton.setFont(f);
    frame.add(twoButton);

    threeButton.setPreferredSize(new Dimension(bHeight, bWidth));
    threeButton.setBackground(Color.DARK_GRAY);
    threeButton.setForeground(Color.GREEN);
    threeButton.setFont(f);
    frame.add(threeButton);

    plusButton.setPreferredSize(new Dimension(bHeight, bWidth));
    plusButton.setBackground(Color.DARK_GRAY);
    plusButton.setForeground(Color.GREEN);
    plusButton.setFont(f);
    frame.add(plusButton);

    fourButton.setPreferredSize(new Dimension(bHeight, bWidth));
    fourButton.setBackground(Color.DARK_GRAY);
    fourButton.setForeground(Color.GREEN);
    fourButton.setFont(f);
    frame.add(fourButton);

    fiveButton.setPreferredSize(new Dimension(bHeight, bWidth));
    fiveButton.setBackground(Color.DARK_GRAY);
    fiveButton.setForeground(Color.GREEN);
    fiveButton.setFont(f);
    frame.add(fiveButton);

    sixButton.setPreferredSize(new Dimension(bHeight, bWidth));
    sixButton.setBackground(Color.DARK_GRAY);
    sixButton.setForeground(Color.GREEN);
    sixButton.setFont(f);
    frame.add(sixButton);

    minusButton.setPreferredSize(new Dimension(bHeight, bWidth));
    minusButton.setBackground(Color.DARK_GRAY);
    minusButton.setForeground(Color.GREEN);
    minusButton.setFont(f);
    frame.add(minusButton);

    sevenButton.setPreferredSize(new Dimension(bHeight, bWidth));
    sevenButton.setBackground(Color.DARK_GRAY);
    sevenButton.setForeground(Color.GREEN);
    sevenButton.setFont(f);
    frame.add(sevenButton);

    eightButton.setPreferredSize(new Dimension(bHeight, bWidth));
    eightButton.setBackground(Color.DARK_GRAY);
    eightButton.setForeground(Color.GREEN);
    eightButton.setFont(f);
    frame.add(eightButton);

    nineButton.setPreferredSize(new Dimension(bHeight,bWidth));
    nineButton.setBackground(Color.DARK_GRAY);
    nineButton.setForeground(Color.GREEN);
    nineButton.setFont(f);
    frame.add(nineButton);

    timesButton.setPreferredSize(new Dimension(bHeight, bWidth));
    timesButton.setBackground(Color.DARK_GRAY);
    timesButton.setForeground(Color.GREEN);
    timesButton.setFont(f);
    frame.add(timesButton);


    zeroButton.setPreferredSize(new Dimension(bHeight, bWidth));
    zeroButton.setBackground(Color.DARK_GRAY);
    zeroButton.setForeground(Color.GREEN);
    zeroButton.setFont(f);
    frame.add(zeroButton);


    enterButton.setPreferredSize(new Dimension(190, bWidth));
    enterButton.setBackground(Color.DARK_GRAY);
    enterButton.setForeground(Color.GREEN);
    enterButton.setFont(f);
    frame.add(enterButton);

    dividButton.setPreferredSize(new Dimension(bHeight, bWidth));
    dividButton.setBackground(Color.DARK_GRAY);
    dividButton.setForeground(Color.GREEN);
    dividButton.setFont(f);
    frame.add(dividButton);

    frame.setComponentOrientation(
            ComponentOrientation.LEFT_TO_RIGHT);


}


private static Dimension Dimension(int bHeight, int bWidth) {
    // TODO Auto-generated method stub
    return null;
}



private static void setLayout(FlowLayout fl) {
    // TODO Auto-generated method stub

}



public static void main(String[] args){
 new Ken();
}


private class Evt implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
    if(e.getSource() == oneButton){

    }

    }

}


}

有人帮忙吗?

共有1个答案

金皓君
2023-03-14

您已经在主类'Ken'上实现了ActionListener接口,因此在本例中不需要EVT类。

我很惊讶这样做是否有效,因为当您的主类使用实现ActionListener但没有实现所需的函数时,您应该会得到一个错误。

因此,在主类中实现ActionPerformed,而不是EVT,在将ctionlistener附加到按钮时,使用这个

if(e.getSource().equals(oneButton)

但这不是问题所在。

在事件处理程序中,必须更新显示数字的gui元素。仅仅将输入设置为1是不够的。因此,您应该将JTextField text也设置为成员变量,然后可以使用以下内容更新其内容:

input = 1;
text.setText(""+input);

另外,你不应该让所有的元素都是静态的。无论如何,它们都被声明为类成员。

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

  • 问题内容: 我正在为我的女友开发这款游戏,而现在我在同一个问题上停留了几天。基本上,我希望她能够按5次“ Gather Wood”按钮,然后在她第五次按该按钮后立即弹出“ Create Fire”按钮。 1.问题是,无论我尝试以哪种方式编程要显示在第五个按钮上的方法,它都不会显示。 我将不胜感激任何编码技巧或大家认为我可以做的任何清理当前代码的事情。 这是收集木纽扣 这是创建按钮 问题答案: 基本

  • 这是我的方法compute(),它接受月数: 要提供上下文, 余额:是员工每月初获得的固定月薪 我的输入示例如下: 如果比尔·乔布斯(BillJobs)是余额为54K的员工,每年从银行获得0%和1.2%的年利率,计算时间将超过13个月。我的期望输出应该是: 其中706933.71的余额是在调用compute方法时计算出来的,但是我最终得到 13个月后的余额为705852.63。

  • 我写了一个Spring批处理作业,从数据库中读取,然后写入csv。 这项工作的工作,但不幸的是,在我的输出CSV文件,它只是把什么是在我的域对象的toString方法。 我真正想要的是bean中用逗号分隔的所有值。这就是为什么我在下面的ItemWriter中加入了分隔线聚合器。 但我认为我对DelimitedLineAggregator的理解是错误的。我以为LineAggregator用于输出,但

  • 我已经完全实现了一个webview,它配备了一个自定义webviewclient及其委托(shouldInterceptRequest和onLoadResource),但现在我想在用户单击特定url的链接时打开本机浏览器,阻止webview导航到它。 我已经实现了“shouldInterceptRequest”(用于我内部网络上站点的自定义行为),当用户单击指向我想在本机浏览器中打开的特定站点的链

  • 当我触摸文本输入时,我希望键盘不会显示出来。如果我使用“keyboard.Dississ”,我会放松对文本输入的关注,我使用的是自定义键盘,它本身是我屏幕的一部分,所以我不希望任何键盘显示出来,而不会放松对文本输入的关注,任何解决方案都可以。我尝试使用库,但一次又一次地面临同样的问题,我该怎么办。这里是我使用的代码