3

谁能解释为什么会发生这种情况?图片在这里图片我无法上传,因为我是新用户。

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

3 回答 3

4

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

j注意

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);
    }
}
于 2012-08-30T14:54:59.523 回答
3

通过首选尺寸设置尺寸时,您必须调用pack()以应用您的首选尺寸。调整框架的大小也会将其打包,因此您可以进行观察。

// component initializations
yourFrame.pack();
于 2012-08-30T13:40:25.727 回答
2

这是你应该做的:

import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.*;

public class JordanOsborn extends JFrame{
    JPanel panel = new JPanel();


    public JordanOsborn(){
        super("jNote");
        panel.setPreferredSize(new Dimension(400,300));
        add(panel);
        Image icon = Toolkit.getDefaultToolkit().getImage("jNote.png");
        setIconImage(icon);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                new JordanOsborn();
            }

        });
    }
}
于 2012-08-30T14:06:24.630 回答