如何在GUI运行时更新GUI

时间:2013-05-24 23:38:17

标签: java swing

所以我在GUI中显示了一个JTextField。我想要做的是当有人按下Enter键时删除文本字段。我已经添加了ActionListener。我只是想知道如何自动更新它而不必将其最小化。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Window extends JFrame{
private JTextField TextField0;
private JTextField TextField1;
private JCheckBox CheckBox0;

//CONSTRUCTOR
public Window(){
    super("Checkbox");
    setLayout(new FlowLayout());

    TextField0 = new JTextField("Add field",15);
    add(TextField0);
    CheckBox0 = new JCheckBox("");



    HandlerClass handler = new HandlerClass();
    TextField0.addActionListener(handler);
}
    //Method: HandlerClass
public class HandlerClass implements ActionListener{
    public void actionPerformed(ActionEvent event){
        if(event.getSource()==TextField0){
            CheckBox0.setText(String.format("%s",event.getActionCommand()));
        }
    }
}
}

编辑:我想出来了! :D谢谢!

4 个答案:

答案 0 :(得分:3)

查看使用CardLayout。CardLayout类管理两个或多个共享相同显示空间的组件(通常是JPanel实例)。

textField0checkBox0添加到2个单独的JPanels。在ActionListener电话

checkBox0.setText(textField0.getText());

使用CardLayout#next从第一个面板翻转到第二个面板。

答案 1 :(得分:3)

假设它位于容器(如JPanel)中,请使用remove()方法,并要求重新绘制面板:

panel.remove(textField);
panel.revalidate();
panel.repaint();

答案 2 :(得分:0)

您必须revalidate()repaint()容器。

答案 3 :(得分:0)

根据您访问它的方式,将JTextField的声明更改为public / private:

public JTextField jtf = new JTextField();

当你创建窗口时:

jtf = new JTextField();
jtf.addActionListener {
removeJTF();

使用此代码删除JTextField:

public void removeJTF() {

    exampleFrame.remove(jtf);
}