Java 程序在调整大小之前不显示 swing 元素?

标签 java swing

谁能解释一下为什么会这样? 图片在这里Image我无法上传,因为我是新用户。

setTitle("jNote");
    pack();
    setVisible(true);
    setLayout(new BorderLayout());
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    Image icon = Toolkit.getDefaultToolkit().getImage("jNote.png");
    setIconImage(icon);

最佳答案

通常 GUI 大小可以根据内容建议。如果在添加组件后调用,pack() 将使 GUI 成为显示组件所需的最小尺寸。

jNote

import java.awt.BorderLayout;
import javax.swing.*;

public class JNote {

    public JComponent getGui(int rows, int cols) {
        JPanel p = new JPanel(new BorderLayout(2,2));

        p.add(new JLabel("1"), BorderLayout.LINE_START);
        JTextArea ta = new JTextArea(rows, cols);
        JScrollPane sp = new JScrollPane(
                ta,
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        p.add(sp);
        p.add(
            new JLabel("Rows: " + rows + "    " + "Columns: " + cols),
            BorderLayout.PAGE_END);

        return p;
    }

    public static void main(String[] args) {
        Runnable r = new Runnable(){
            public void run() {
                int cols = 20;
                JNote jNote = new JNote();
                for (int rows=6; rows>0; rows-=2) { 
                    JFrame f = new JFrame("jNote " + rows + "x" + cols);
                    f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    f.setLocationByPlatform(true);
                    f.add(jNote.getGui(rows, cols));

                    f.pack();
                    f.setVisible(true);
                }
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

关于Java 程序在调整大小之前不显示 swing 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12198197/

相关文章:

java - 我在 Java Swing 中遇到异常,但程序继续正常运行。我应该担心吗?

java - AlarmManager 在第二个间隔完成之前触发

java - 是否有必要同步线程安全单例的方法

java - 从源代码构建 C3p0 时出错

java - JFreeChart 如何获取时间序列图表上显示的数据点

java - 鼠标事件 e (Jpanel) Java 帮助

java - 在 Java 游戏中,按下一个键会取消仍然按下的另一个键

Java:是否有 SwingUtilities.invokeNowOrLaterIfEDT(...) 或类似的?

java - Play 应用中 POST 的内部重定向?

java - 意外的输出, float 和整数之间的混淆