通过 JLabel 显示总和
Showing Sum through JLabel
我是 java 的新手,我只想制作一个简单的 JFrame,它通过 JtextFields 将两个数字作为输入,对它们求和,然后 return 通过 JLabel 得到答案...但是它根本没有按照它应该做的去做,这是我的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.util.*;
public class gUi extends JFrame {
private JLabel lbl;
private JLabel lbl2;
private JLabel lbl3;
private JTextField tb;
private JTextField tb1;
private int num1;
private int num2;
public gUi(){
super("Sum Dialog");
setLayout(new FlowLayout());
lbl = new JLabel("1st Number:");
add(lbl);
tb = new JTextField(15);
add(tb);
tb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
num1 = Integer.parseInt(tb.getText());
}
});
lbl2 = new JLabel("2nd Number");
add(lbl2);
tb1= new JTextField(15);
tb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event ){
num2= Integer.parseInt(tb1.getText());
}
});
add(tb1);
int sum= num1+num2;
String ssum = Integer.toString(sum);
lbl3 = new JLabel();
lbl3.setText(ssum);
add(lbl3);
}
}
import java.awt.*;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
gUi g =new gUi();
g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
g.setVisible(true);
g.setSize(180, 160);
}
}
它编译正常,但当我放一些整数时不通过 JLabel 显示总和
通过文本框...
我已经遇到这个问题一个星期了,尝试了到目前为止我所知道的不同方法,但问题仍然存在...
您不应该在文本字段上放置动作侦听器(嗯,当然可以;但这里还有其他选项)。
您可以在您的框架中添加一个按钮,可能带有文本 "add"。每当那个按钮被点击,你就获取这两个值,把它们相加;并将它们推入第三个文本字段。
截至目前,您的代码仅计算一次 0+0 的和;当你的构造函数被调用时。相反,您必须确保此计算发生 "later on" - 当用户要求它发生时!
但郑重声明:如果您将 same 动作侦听器放在文本字段上,那也可以。如果该动作侦听器只是获取 both 标签,添加它们,并将总和放入字段编号 3.
您已经创建了一个 JLabel 并将其初始值设置为 0 (因为最初 num1 和 num2 都是 0 )。您需要刷新 JLabel(重新计算并显示操作执行方法中的当前总和)。
例如
private void updateSum() {
lbl3.setText(String.valueOf(num1+num2));
}
并在文本字段 1 的动作侦听器中调用它
tb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
num1 = Integer.parseInt(tb.getText());
updateSum();
}
});
和文本字段 2
tb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event ){
num2= Integer.parseInt(tb1.getText());
updateSum();
}
});
Have a look at the code below(includes comments):
import java.awt.FlowLayout;
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;
/**
* Shows a Stage that has two text Fields
*
*/
@SuppressWarnings("serial")
public class UserInterface extends JFrame {
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JTextField textField1;
private JTextField textField2;
/**
* Constructor
*/
public UserInterface() {
super("Sum Dialog");
// Layout
setLayout(new FlowLayout());
// 1st JLabel
label1 = new JLabel("1st Number:");
add(label1);
textField1 = new JTextField(15);
add(textField1);
// 2 second JLabel
label2 = new JLabel("2nd Number");
add(label2);
textField2 = new JTextField(15);
add(textField2);
// 3 third label
label3 = new JLabel();
label3.setSize(200, 30);
add(label3);
JButton button = new JButton("Calculate");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
// calculate the sum when the Button is pressed
int sum = Integer.parseInt(textField2.getText()) + Integer.parseInt(textField2.getText());
label3.setText(Integer.toString(sum));
}
});
add(button);
}
/**
* Main method of the application
*
* @param args
*/
public static void main(String[] args) {
UserInterface main = new UserInterface();
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setVisible(true);
main.setSize(180, 160);
}
}
我是 java 的新手,我只想制作一个简单的 JFrame,它通过 JtextFields 将两个数字作为输入,对它们求和,然后 return 通过 JLabel 得到答案...但是它根本没有按照它应该做的去做,这是我的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.util.*;
public class gUi extends JFrame {
private JLabel lbl;
private JLabel lbl2;
private JLabel lbl3;
private JTextField tb;
private JTextField tb1;
private int num1;
private int num2;
public gUi(){
super("Sum Dialog");
setLayout(new FlowLayout());
lbl = new JLabel("1st Number:");
add(lbl);
tb = new JTextField(15);
add(tb);
tb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
num1 = Integer.parseInt(tb.getText());
}
});
lbl2 = new JLabel("2nd Number");
add(lbl2);
tb1= new JTextField(15);
tb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event ){
num2= Integer.parseInt(tb1.getText());
}
});
add(tb1);
int sum= num1+num2;
String ssum = Integer.toString(sum);
lbl3 = new JLabel();
lbl3.setText(ssum);
add(lbl3);
}
}
import java.awt.*;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
gUi g =new gUi();
g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
g.setVisible(true);
g.setSize(180, 160);
}
}
它编译正常,但当我放一些整数时不通过 JLabel 显示总和 通过文本框... 我已经遇到这个问题一个星期了,尝试了到目前为止我所知道的不同方法,但问题仍然存在...
您不应该在文本字段上放置动作侦听器(嗯,当然可以;但这里还有其他选项)。
您可以在您的框架中添加一个按钮,可能带有文本 "add"。每当那个按钮被点击,你就获取这两个值,把它们相加;并将它们推入第三个文本字段。
截至目前,您的代码仅计算一次 0+0 的和;当你的构造函数被调用时。相反,您必须确保此计算发生 "later on" - 当用户要求它发生时!
但郑重声明:如果您将 same 动作侦听器放在文本字段上,那也可以。如果该动作侦听器只是获取 both 标签,添加它们,并将总和放入字段编号 3.
您已经创建了一个 JLabel 并将其初始值设置为 0 (因为最初 num1 和 num2 都是 0 )。您需要刷新 JLabel(重新计算并显示操作执行方法中的当前总和)。
例如
private void updateSum() {
lbl3.setText(String.valueOf(num1+num2));
}
并在文本字段 1 的动作侦听器中调用它
tb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
num1 = Integer.parseInt(tb.getText());
updateSum();
}
});
和文本字段 2
tb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event ){
num2= Integer.parseInt(tb1.getText());
updateSum();
}
});
Have a look at the code below(includes comments):
import java.awt.FlowLayout;
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;
/**
* Shows a Stage that has two text Fields
*
*/
@SuppressWarnings("serial")
public class UserInterface extends JFrame {
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JTextField textField1;
private JTextField textField2;
/**
* Constructor
*/
public UserInterface() {
super("Sum Dialog");
// Layout
setLayout(new FlowLayout());
// 1st JLabel
label1 = new JLabel("1st Number:");
add(label1);
textField1 = new JTextField(15);
add(textField1);
// 2 second JLabel
label2 = new JLabel("2nd Number");
add(label2);
textField2 = new JTextField(15);
add(textField2);
// 3 third label
label3 = new JLabel();
label3.setSize(200, 30);
add(label3);
JButton button = new JButton("Calculate");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
// calculate the sum when the Button is pressed
int sum = Integer.parseInt(textField2.getText()) + Integer.parseInt(textField2.getText());
label3.setText(Integer.toString(sum));
}
});
add(button);
}
/**
* Main method of the application
*
* @param args
*/
public static void main(String[] args) {
UserInterface main = new UserInterface();
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setVisible(true);
main.setSize(180, 160);
}
}