首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTextField在JWindow中不可编辑

JTextField在JWindow中不可编辑
EN

Stack Overflow用户
提问于 2012-03-12 06:44:33
回答 2查看 4.8K关注 0票数 5

我有一个Jwindow,当我向它添加一个Jtextfield时,textfield就变得不可编辑了。

代码语言:javascript
复制
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的所有者时,textfield现在是可编辑的,但是这个框架与jwindow一起出现了:

代码语言:javascript
复制
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);

所以,我有两个问题:

  1. 为什么JTextField在JWindow中是不可编辑的,我如何使它可编辑?
  2. 使用JFrame作为JWindow边界的主要目的是什么?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-12 06:54:16

编辑,

只有当

  • 内容在屏幕上显示为可编辑和可访问内容时,才是可访问的,而
  • 使用un_decorated JDialog而不是JWindow,jDialog不导致non_accesible内容,
  • 为什么.,我无法解释,不能解释为什么,为什么,在这一刻,API没有告诉我任何关于引起可访问的,可编辑的.

。。。

代码语言:javascript
复制
1. Why JTextField is uneditable in JWindow and how could i let it able to edit?

真的不知道

代码语言:javascript
复制
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();
            }
        });
    }
}

编辑

代码语言:javascript
复制
Yes, both are editable, and i wannt only JWindow to be displayed. Thanks!! 

默认情况下,对于正确的workaround

  • nobody,
  • 需要JWindow JFrame,告诉这个JFrame必须是可见的(对GUI有效),然后从frame.setDefaultClose中删除这些代码行.从我的示例ActionListener

  • 中包括frame.setVisible(true); (当前JVM实例从未从内存中删除),直到您的PC重新启动或关闭为止,您必须在frame.setVisible(true);中添加带有代码行System.exit(0)的分隔出口JButton
票数 5
EN

Stack Overflow用户

发布于 2012-03-12 06:50:10

JWindow应该是可聚焦的。使用public void setFocusable(boolean focusable)方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9662761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档