gpt4 book ai didi

java - Swing:让我的简单 GUI 发挥作用时遇到问题

转载 作者:行者123 更新时间:2023-12-02 05:50:22 25 4
gpt4 key购买 nike

我正在尝试构建一个使用 GUI 简单地递增或递减整数的计数器。请有人帮助我,我哪里出了问题。我的按钮只是不增加或减少起始整数值 0。

    import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

import org.omg.CORBA.TCKind;

public class MainFrame extends JFrame {
// Field Variables
private int counter;
private int currentNumber = 0;


// Methods
public void setCounter(int counter){
currentNumber = counter;
}

public int getCounter(){
return currentNumber;
}

public void IncrementCounter() {
currentNumber++;

}

public void DecrementCounter() {
currentNumber = 222;
}

public MainFrame(String title) {
super(title);

// SetLayout
setLayout(new GridLayout(2, 2));

// Add Swing components
final JTextField tCounter = new JTextField();
tCounter.setEditable(false);
tCounter.setText(currentNumber + "");

JTextField label = new JTextField();
label.setText("The Count: ");
label.setEditable(false);

JButton btn1 = new JButton("up");
JButton btn2 = new JButton("down");

// Add components to content pane

getContentPane().add(btn1);
getContentPane().add(btn2);
getContentPane().add(label);
getContentPane().add(tCounter);

// Add btn1 ad btn2 behaviour.
btn1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
IncrementCounter();
}
});

// Add btn2 Behaviour
btn2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
DecrementCounter();

}
});

}
}

最佳答案

每当您更改计数时,您都必须更新标签tCounter。为此,将 tCounter 变量转换为字段,添加 updateLabel() 方法,从 IncrementCountDecrementCount 调用它。也从构造函数中调用它来初始化文本。

JTextField tCounter=new JTextField();

void updateLabel(){
tCounter.setText(currentNumber+"");
}


public void IncrementCounter() {
currentNumber++;
updateLabel()
}

...

更新的代码:

package foo;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class MainFrame extends JFrame {
// Field Variables
private int counter;
private int currentNumber = 0;

// Methods
public void setCounter(int counter) {
currentNumber = counter;
}

public int getCounter() {
return currentNumber;
}

public void IncrementCounter() {
currentNumber++;
updateLabel();
}

void updateLabel() {
tCounter.setText(currentNumber + "");
}

public void DecrementCounter() {
currentNumber = 222;
updateLabel();
}

public static void main(String... args) {
MainFrame frame = new MainFrame("Foo");
frame.pack();
frame.setVisible(true);
}

final JTextField tCounter = new JTextField();

public MainFrame(String title) {
super(title);

// SetLayout
setLayout(new GridLayout(2, 2));

// Add Swing components
tCounter.setEditable(false);
updateLabel();

JTextField label = new JTextField();
label.setText("The Count: ");
label.setEditable(false);

JButton btn1 = new JButton("up");
JButton btn2 = new JButton("down");

// Add components to content pane

getContentPane().add(btn1);
getContentPane().add(btn2);
getContentPane().add(label);
getContentPane().add(tCounter);

// Add btn1 ad btn2 behaviour.
btn1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
IncrementCounter();
}
});

// Add btn2 Behaviour
btn2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
DecrementCounter();

}
});

}
}

关于java - Swing:让我的简单 GUI 发挥作用时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23593356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com