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

标签 java swing

我正在尝试构建一个使用 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/

相关文章:

java - 如何在测试类中的 main 中 stub 函数(java)

java - 验证文本字段和无联系文本字段

java - Mac OS X Java 最初不绘制

java - 如何让Web Service使用多线程?

Java println 格式化以便我可以显示表格?

java - 整数除法 : Why is the result of 1/3 == 0?

java - 如何使用 Spring Batch 并行步骤分割流配置上述用例?

java - 向 JFrame 添加元素与向 Container 添加元素有什么区别?

java - 您可以为paintComponent中的对象添加鼠标监听器吗

Java:向 JFrame 添加关键监听器