我有一个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);
所以,我有两个问题:
答案 0 :(得分:6)
编辑,
JWindow
的内容仅在其父级显示在屏幕上时才可访问
对于可编辑和可访问的内容,使用un_decorated JDialog
代替JWindow
,jDialog不会导致无法访问的内容,
之所以......,我无法解释,没有找不到原因,在这一刻没有办法,API没有说明任何导致可访问,可编辑的内容......
。 。
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!!
默认情况下,JWindow需要JFrame才能获得正确的解决方法
没有人告诉我这个JFrame必须是可见的(对GUI有效),然后从frame.setDefaultClose
....中删除这些代码行,包括我的示例中的frame.setVisible(true);
在这种形式下,当前的JVM实例永远不会从RAM中消失,直到您的PC重新启动或关闭,您必须在JButton
内添加单独的退出System.exit(0)
和代码行ActionListener
答案 1 :(得分:3)
JWindow应该是可以关注的。使用public void setFocusable(boolean focusable)
方法。
答案 2 :(得分:1)
使用此链接...你会得到一些想法...... http://www.velocityreviews.com/forums/t366288-jtextfield-inactive-in-a-jwindow.html