所以我在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谢谢!
答案 0 :(得分:3)
查看使用CardLayout。CardLayout类管理两个或多个共享相同显示空间的组件(通常是JPanel实例)。
将textField0
和checkBox0
添加到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);
}