1

所以我在 GUI 中显示了一个 JTextField。我想要做的是当有人按下回车键时删除文本字段。我已经添加了 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

4 回答 4

3

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

textField0将和添加checkBox0到 2 个单独JPanels的 . 在ActionListener通话中

checkBox0.setText(textField0.getText());

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

于 2013-05-24T23:43:34.070 回答
3

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

panel.remove(textField);
panel.revalidate();
panel.repaint();
于 2013-05-24T23:48:07.740 回答
0

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

于 2013-05-24T23:46:27.860 回答
0

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

public JTextField jtf = new JTextField();

当您创建窗口时:

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

使用此代码删除 JTextField:

public void removeJTF() {

    exampleFrame.remove(jtf);
}
于 2013-05-24T23:48:43.590 回答