我有一个Jwindow,当我向其中添加Jtextfield时,该文本字段变得不可编辑。
JWindow window = new JWindow();
window.setBounds(400, 100, 700,500);
window.setVisible(true);
window.setLayout(null);
JTextField text = new JTextField();
text.setBounds(300, 300, 150, 30);
text.setEditable(true);
window.getContentPane().add(text);
但是当我尝试使用Jframe作为Jwindow的所有者时,文本字段现在是可编辑的,但是该框架与jwindow一起出现了:
JFrame frame = new JFrame();
frame.setVisible(true);
JWindow window = new JWindow();
window.setBounds(400, 100, 700,500);
window.setVisible(true);
window.setLayout(null);
JTextField text = new JTextField();
text.setBounds(300, 300, 150, 30);
text.setEditable(true);
window.getContentPane().add(text);
所以,我有两个问题:
最佳答案
编辑,
仅当其父项显示在屏幕上时,才能访问JWindow
的
对于可编辑和可访问内容的
JDialog
而不是JWindow
,jDialog不会导致不可访问的内容。
。
。
1. Why JTextField is uneditable in JWindow and how could i let it able to edit?
真的不知道
import java.awt.*;
import javax.swing.*;
public class WindowTest {
private JFrame frame;
public JPanel createContentPane() {
JTextField text = new JTextField("Whatewer");
JPanel panel = new JPanel();
panel.add(text);
createAndShowWindow();
return panel;
}
void createAndShowGUI() {
frame = new JFrame("Window Test");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setContentPane(createContentPane());
frame.setLocation(50, 50);
frame.pack();
frame.setVisible(true);
}
private void createAndShowWindow() {
JTextField text = new JTextField("Whatewer");
JWindow win = new JWindow(frame);
win.setLayout(new GridLayout(0, 1));
win.add(text);
win.pack();
win.setLocation(150, 50);
win.setVisible(true);
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new WindowTest().createAndShowGUI();
}
});
}
}
编辑
Yes, both are editable, and i wannt only JWindow to be displayed. Thanks!!
默认情况下,
frame.setDefaultClose
....中删除这些代码行....包括我的示例frame.setVisible(true);
这种形式的JButton
System.exit(0)
的单独的退出ActionListener