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はそれらを表示するために必要な最小サイズになります。

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);
    }
}
于 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 に答える