日期:2014-05-20  浏览次数:21313 次

java swing 组件大小偶尔不能调整
我用如下代码创建了一个应用,用以显示一个文本框
Java code
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 400);
        frame.setVisible(true);
        frame.setTitle("电话簿");
        
        JTextField textField = new JTextField("hello,world");
        textField.setColumns(1);
        frame.add(textField);
        textField.setBounds(10, 10, 300, 30);
        //textField.setText( String.valueOf( textField.getColumns()) );
        
        Font font = new Font("Comic Sans MS", Font.PLAIN, 15);
        textField.setFont(font);
    }

可现在遇到了个奇怪的问题,我在eclipse下调试时,有时文本框组件占满整个应用界面,有时又正常
通过不断的点击运行按钮我琢磨出个规律,第偶数号次运行时正常,也就是第2,4,6...次点击 run 按钮时组件大小显示正常。

谁能告诉我这是哪里的原因? 还是怪我人品值差?

------解决方案--------------------
frame 要预先设置成 无布局模式(或者说绝对定位布局)
frame.setLayout(null);
------解决方案--------------------
默认,里面控件随窗体变化而变化。
所以如果把窗体最大化了,那里面field也最大化了,就是楼主说的占满整个空间了。

frame.setResizable(false);
设置一下锁定窗体大小,这样就不会变化了;

或者将布局管理器设置为null