【发布时间】:2013-02-13 22:04:27
【问题描述】:
我想仅当用户在输入字段中输入值时才显示 TextField
这是我的代码:
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class PlayingAround {
JFrame frame;
JTextField display;
JTextField input;
public static void main(String[] args) {
PlayingAround obj = new PlayingAround();
obj.create();
}
private void create() {
frame = new JFrame();
display = new JTextField();
input = new JTextField();
display.setEditable(false);
display.setVisible(false);
input.addKeyListener(new Listener());
frame.add(BorderLayout.NORTH, display);
frame.add(BorderLayout.SOUTH, input);
frame.setSize(300, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class Listener implements KeyListener {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
display.setVisible(true);
display.setText(input.getText());
}
}
}
但我的问题是 Display JTextField 直到有一些事件(如 调整窗口大小、最小化和最大化窗口)才会变得可见强>。
我尝试在 keyReleased 方法中调用 frame.repaint() 但即使它也没有帮助。
【问题讨论】:
-
由于您使用的是布局管理器,您可能需要在内容窗格上调用 validate()。当您最大化/最小化窗口时,这可能会发生。