1
4

1 に答える 1

2

私は問題ありません...

ここに画像の説明を入力

次のいずれかまたは複数のことを行っていると思われます

  1. 最初のセパレーターが、コンテナーの最上部、タイトル バーの真上に配置され、追加されていないかのように "表示" される場合があります。
  2. EDT で UI を作成していない
  3. ペインの作成を完了する前にフレームを表示しています
  4. あなたが私たちに言っていない他の何か

.

public class TestSeperator {

    public static void main(String[] args) {
        new TestSeperator();
    }

    public TestSeperator() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException ex) {
                } catch (InstantiationException ex) {
                } catch (IllegalAccessException ex) {
                } catch (UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestSeperatorPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestSeperatorPane extends JPanel {

        public TestSeperatorPane() {
            setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
            int counter = 1;
            add(new JSeparator(SwingConstants.HORIZONTAL)); //Here is the
            add(new JSeparator(SwingConstants.HORIZONTAL)); //problem
            JPanel p2 = new JPanel();
            int petsx = 4;
            int petsy = 4;
            for (int i = 0; i < petsx; i++) {
                for (int i2 = 0; i2 < petsy; i2++) {
                    p2.add(new JLabel(":)"));
                    p2.add(new JLabel("A"));
                    if (counter % petsx == 0) {
                        add(p2);
                        add(new JSeparator(SwingConstants.HORIZONTAL));
                        p2 = new JPanel();
                        counter = 0;
                    } else {
                        JSeparator js = new JSeparator(SwingConstants.VERTICAL);
                        // This is a bad idea...
                        //js.setPreferredSize(new Dimension(1, newPetHeight));
                        js.setBorder(new EmptyBorder(6, 0, 6, 0));
                        p2.add(js);
                    }
                    counter++;
                }
            }
        }
    }
}
于 2012-11-06T19:05:45.570 に答える