- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在这里,我正在尝试创建一个计算器,正如你所看到的,我无法为我在它上面的操作编写上帝代码。我想获得有关我的行动的帮助,例如:-1)。当我单击按钮时,它(上面写的符号数量)将出现在 JTextField (tf) 中,2)。当输出出现在 JTextField 上时,它应该是这样的:- 当我按 1,然后按 1,然后按 4,然后它就变成 14。
package p2;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.*;
import javax.swing.*;
public class Gui extends WindowAdapter implements ActionListener {
JFrame fr;
JPanel p1,p2;
JLabel l1;
JTextField tf;
JButton b1,b2,b3,b4,b5,b6,b7,b8,b9;
JButton b00,b11,b22,b33,b44,b55,b66,b77,b88,b99;
public Gui(){
//Frame
fr=new JFrame("Calculator");
fr.getContentPane().setBackground(Color.LIGHT_GRAY);
//fr.setBackground(Color.black);
//Panel
p1=new JPanel();
p2=new JPanel();
p1.setBounds(5, 5, 375, 90);
p1.setBackground(Color.gray);
p2.setBounds(5, 115, 379, 390);
p2.setBackground(Color.darkGray);
//Label
l1=new JLabel("Perform operations:");
l1.setBounds(8, 91,200,23);
//TextField to see performing operation
tf=new JTextField("start",50);
tf.setBounds( 5 , 5 , 365 , 80 );
//Calculator Button
b1=new JButton("CE");
b1.setBounds(10, 10, 85, 70);
JButton b2=new JButton("C");
b2.setBounds(100, 10, 85, 70);
JButton b3=new JButton("delete");
b3.setBounds(190, 10, 85, 70);
JButton b4=new JButton("%");
b4.setBounds(280, 10, 90, 70);
JButton b99=new JButton("9");
b99.setBounds(10, 85, 85, 70);
JButton b88=new JButton("8");
b88.setBounds(100, 85, 85, 70);
JButton b77=new JButton("7");
b77.setBounds(190, 85, 85, 70);
JButton b5=new JButton("*");
b5.setBounds(280, 85, 90, 70);
JButton b66=new JButton("6");
b66.setBounds(10, 160, 85, 70);
JButton b55=new JButton("5");
b55.setBounds(100, 160, 85, 70);
JButton b44=new JButton("4");
b44.setBounds(190, 160, 85, 70);
JButton b6=new JButton("-");
b6.setBounds(280, 160, 90, 70);
JButton b33=new JButton("3");
b33.setBounds(10, 235, 85, 70);
JButton b22=new JButton("2");
b22.setBounds(100, 235, 85, 70);
JButton b11=new JButton("1");
b11.setBounds(190, 235, 85, 70);
JButton b7=new JButton("+");
b7.setBounds(280, 235, 90, 70);
JButton b8=new JButton("00");
b8.setBounds(10, 310, 85, 70);
JButton b00=new JButton("0");
b00.setBounds(100, 310, 85, 70);
JButton b9=new JButton(".");
b9.setBounds(190, 310, 85, 70);
JButton b10=new JButton("=");
b10.setBounds(280, 310, 90, 70);
//Add action listeners
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b00.addActionListener(this);
b11.addActionListener(this);
b22.addActionListener(this);
b33.addActionListener(this);
b44.addActionListener(this);
b55.addActionListener(this);
b66.addActionListener(this);
b77.addActionListener(this);
b88.addActionListener(this);
b99.addActionListener(this);
fr.setResizable(false);
fr.setLayout(null);//Always before adding components..
p1.setLayout(null);
p2.setLayout(null);
tf.setFont(new Font("Courier", Font.BOLD,12));
fr.add(p1);p1.add(tf);
fr.add(l1);
fr.add(p2);p2.add(b1);p2.add(b2);p2.add(b3);p2.add(b4);
p2.add(b99);p2.add(b88);p2.add(b77);p2.add(b5);
p2.add(b66);p2.add(b55);p2.add(b44);p2.add(b6);
p2.add(b33);p2.add(b22);p2.add(b11);p2.add(b7);
p2.add(b8);p2.add(b00);p2.add(b9);p2.add(b10);
fr.setVisible(true);
fr.setSize(405, 550);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b99)
tf.setText(tf.getText() +"9");
if(e.getSource()==b88)
tf.setText(tf.getText() +"8");
if(e.getSource()==b77)
tf.setText(tf.getText() +"7");
if(e.getSource()==b66)
tf.setText(tf.getText() +"6");
if(e.getSource()==b55)
tf.setText(tf.getText() +"5");
if(e.getSource()==b44)
tf.setText(tf.getText() +"4");
if(e.getSource()==b33)
tf.setText(tf.getText() +"3");
if(e.getSource()==b22)
tf.setText(tf.getText() +"2");
if(e.getSource()==b11)
tf.setText(tf.getText() +"1");
if(e.getSource()==b00)
tf.setText(tf.getText() +"0");
}
public static void main(String[] args) {
new Gui();
}
}
最佳答案
您不应在构造函数中声明新变量,而应在类声明中使用已声明的变量。
示例:
JButton b2=new JButton("C");
应替换为
b2=new JButton("C");
等等。
以下是正确的示例:
package de.eurodata.commons.lookandfeel.ui.swing;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class Gui extends WindowAdapter implements ActionListener {
JFrame fr;
JPanel p1,p2;
JLabel l1;
JTextField tf;
JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b10;
JButton b00,b11,b22,b33,b44,b55,b66,b77,b88,b99;
public Gui(){
//Frame
fr=new JFrame("Calculator");
fr.getContentPane().setBackground(Color.LIGHT_GRAY);
//fr.setBackground(Color.black);
//Panel
p1=new JPanel();
p2=new JPanel();
p1.setBounds(5, 5, 375, 90);
p1.setBackground(Color.gray);
p2.setBounds(5, 115, 379, 390);
p2.setBackground(Color.darkGray);
//Label
l1=new JLabel("Perform operations:");
l1.setBounds(8, 91,200,23);
//TextField to see performing operation
tf=new JTextField("start",50);
tf.setBounds( 5 , 5 , 365 , 80 );
//Calculator Button
b1=new JButton("CE");
b1.setBounds(10, 10, 85, 70);
b2 = new JButton("C");
b2.setBounds(100, 10, 85, 70);
b3 = new JButton("delete");
b3.setBounds(190, 10, 85, 70);
b4 = new JButton("%");
b4.setBounds(280, 10, 90, 70);
b99 = new JButton("9");
b99.setBounds(10, 85, 85, 70);
b88 = new JButton("8");
b88.setBounds(100, 85, 85, 70);
b77 = new JButton("7");
b77.setBounds(190, 85, 85, 70);
b5 = new JButton("*");
b5.setBounds(280, 85, 90, 70);
b66 = new JButton("6");
b66.setBounds(10, 160, 85, 70);
b55 = new JButton("5");
b55.setBounds(100, 160, 85, 70);
b44 = new JButton("4");
b44.setBounds(190, 160, 85, 70);
b6 = new JButton("-");
b6.setBounds(280, 160, 90, 70);
b33 = new JButton("3");
b33.setBounds(10, 235, 85, 70);
b22 = new JButton("2");
b22.setBounds(100, 235, 85, 70);
b11 = new JButton("1");
b11.setBounds(190, 235, 85, 70);
b7 = new JButton("+");
b7.setBounds(280, 235, 90, 70);
b8 = new JButton("00");
b8.setBounds(10, 310, 85, 70);
b00 = new JButton("0");
b00.setBounds(100, 310, 85, 70);
b9 = new JButton(".");
b9.setBounds(190, 310, 85, 70);
b10 = new JButton("=");
b10.setBounds(280, 310, 90, 70);
//Add action listeners
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b00.addActionListener(this);
b11.addActionListener(this);
b22.addActionListener(this);
b33.addActionListener(this);
b44.addActionListener(this);
b55.addActionListener(this);
b66.addActionListener(this);
b77.addActionListener(this);
b88.addActionListener(this);
b99.addActionListener(this);
fr.setResizable(false);
fr.setLayout(null);//Always before adding components..
p1.setLayout(null);
p2.setLayout(null);
tf.setFont(new Font("Courier", Font.BOLD,12));
fr.add(p1);p1.add(tf);
fr.add(l1);
fr.add(p2);p2.add(b1);p2.add(b2);p2.add(b3);p2.add(b4);
p2.add(b99);p2.add(b88);p2.add(b77);p2.add(b5);
p2.add(b66);p2.add(b55);p2.add(b44);p2.add(b6);
p2.add(b33);p2.add(b22);p2.add(b11);p2.add(b7);
p2.add(b8);p2.add(b00);p2.add(b9);p2.add(b10);
fr.setVisible(true);
fr.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
fr.setSize(405, 550);
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(tf.getText());
System.out.println(e.getSource());
if(e.getSource()==b99)
tf.setText(tf.getText() +"9");
if(e.getSource()==b88)
tf.setText(tf.getText() +"8");
if(e.getSource()==b77)
tf.setText(tf.getText() +"7");
if(e.getSource()==b66)
tf.setText(tf.getText() +"6");
if(e.getSource()==b55)
tf.setText(tf.getText() +"5");
if(e.getSource()==b44)
tf.setText(tf.getText() +"4");
if(e.getSource()==b33)
tf.setText(tf.getText() +"3");
if(e.getSource()==b22)
tf.setText(tf.getText() +"2");
if(e.getSource()==b11)
tf.setText(tf.getText() +"1");
if(e.getSource()==b00)
tf.setText(tf.getText() +"0");
System.out.println("After: " + tf.getText());
}
public static void main(String[] args) {
new Gui();
}
}
重要:因为已经向您建议了,请了解布局管理器,因为 setLayout(null)
对于 Swing 来说是一种非常糟糕的做法!
关于java - 为什么我的 JButton 即使在第一次单击时也没有在单击时在 JTextFrame 上显示输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408141/
我正在使用 OUTFILE 命令,但由于权限问题和安全风险,我想将 shell 的输出转储到文件中,但出现了一些错误。我试过的 #This is a simple shell to connect t
我刚刚开始学习 Java,我想克服在尝试为这个“问题”创建 Java 程序时出现的障碍。这是我必须创建一个程序来解决的问题: Tandy 喜欢分发糖果,但只有 n 颗糖果。对于她给第 i 个糖果的人,
你好,我想知道我是否可以得到一些帮助来解决我在 C++ 中打印出 vector 内容的问题 我试图以特定顺序在一个或两个函数调用中输出一个类的所有变量。但是我在遍历 vector 时收到一个奇怪的错误
我正在将 intellij (2019.1.1) 用于 java gradle (5.4.1) 项目,并使用 lombok (1.18.6) 来自动生成代码。 Intellij 将生成的源放在 out
编辑:在与 guest271314 交流后,我意识到问题的措辞(在我的问题正文中)可能具有误导性。我保留了旧版本并更好地改写了新版本 背景: 从远程服务器获取 JSON 时,响应 header 包含一
我的问题可能有点令人困惑。我遇到的问题是我正在使用来自 Java 的 StoredProcedureCall 调用过程,例如: StoredProcedureCall call = new Store
在我使用的一些IDL中,我注意到在方法中标记返回值有2个约定-[in, out]和[out, retval]。 当存在多个返回值时,似乎使用了[in, out],例如: HRESULT MyMetho
当我查看 gar -h 的帮助输出时,它告诉我: [...] gar: supported targets: elf64-x86-64 elf32-i386 a.out-i386-linux [...
我想循环遍历一个列表,并以 HTML 格式打印其中的一部分,以代码格式打印其中的一部分。所以更准确地说:我想产生与这相同的输出 1 is a great number 2 is a great
我有下面的tekton管道,并尝试在Google Cloud上运行。集群角色绑定。集群角色。该服务帐户具有以下权限。。例外。不确定需要为服务帐户设置什么权限。
当尝试从 make 过滤非常长的输出以获取特定警告或错误消息时,第一个想法是这样的: $ make | grep -i 'warning: someone set up us the bomb' 然而
我正在创建一个抽象工具类,该类对另一组外部类(不受我控制)进行操作。外部类在某些接口(interface)点概念上相似,但访问它们相似属性的语法不同。它们还具有不同的语法来应用工具操作的结果。我创建了
这个问题已经有答案了: What do numbers starting with 0 mean in python? (9 个回答) 已关闭 7 年前。 在我的代码中使用按位与运算符 (&) 时,我
我写了这段代码来解析输入文件中的行输入格式:电影 ID 可以有多个条目,所以我们应该计算平均值输出:**没有重复(这是问题所在) import re f = open("ratings2.txt",
我需要处理超过 1000 万个光谱数据集。数据结构如下:大约有 1000 个 .fits(.fits 是某种数据存储格式)文件,每个文件包含大约 600-1000 个光谱,其中每个光谱中有大约 450
我编写了一个简单的 C 程序,它读取一个文件并生成一个包含每个单词及其出现频率的表格。 该程序有效,我已经能够在 Linux 上运行的终端中获得显示的输出,但是,我不确定如何获得生成的显示以生成包含词
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
1.普通的输出: print(str)#str是任意一个字符串,数字··· 2.格式化输出: ?
我无法让 logstash 正常工作。 Basic logstash Example作品。但后来我与 Advanced Pipeline Example 作斗争.也许这也可能是 Elasticsear
这是我想要做的: 我想让用户给我的程序一些声音数据(通过麦克风输入),然后保持 250 毫秒,然后通过扬声器输出。 我已经使用 Java Sound API 做到了这一点。问题是它有点慢。从发出声音到
我是一名优秀的程序员,十分优秀!