2

次のソース コードがあります...jframe に jscrollpane を追加する方法を教えてください。jframeに追加しようと何度か試みましたが、進歩はありませんでした。それも表示されていません。

public class Form3 {
        JFrame jframe = new JFrame("Etiket print.");
        JPanel panel1 = new JPanel();
        JPanel panel2 = new JPanel();
        JPanel panel3 = new JPanel();
        JPanel panel4 = new JPanel();
        JScrollPane scrollFrame = new JScrollPane(panel2);
        Color myBlue1Color = new Color(168, 175, 247);
        Color myBlue2Color = new Color(139, 146, 255);



           public Form3(){
                jframe.setMinimumSize(new Dimension(1280, 1000));
                panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS));
                panel2.setAutoscrolls(true);
                jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                //---------------------------------Header
                panel1 = createSquareJPanel(Color.YELLOW, 600,200);
                panel3 = createSquareJPanel(Color.GREEN, 400,200);
                panel4 = createSquareJPanel(Color.white, 280,200);
                JPanel container = new JPanel();
                JPanel container1 = new JPanel();
                JPanel container2 = new JPanel();
                container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
                container1.setLayout(new BoxLayout(container1, BoxLayout.Y_AXIS));
                container2.setLayout(new BoxLayout(container2, BoxLayout.X_AXIS));


                container1.add(panel1);
                container2.add(container1);
                container2.add(panel3);
                container2.add(panel4);
                container.add(container2);
                container.add(panel2);

                {

                    for (int i=0; i<25; i++){

                        JPanel harnessPanel= new JPanel();
                        harnessPanel.setMinimumSize(new Dimension(1280, 70));
                        harnessPanel.setMaximumSize(new Dimension(1280, 70));
                        harnessPanel.setPreferredSize(new Dimension(1280, 70));
                        if(i%2==0) {
                            harnessPanel.setBackground(myBlue1Color);
                        }
                        else {
                            harnessPanel.setBackground(myBlue2Color);
                        }
                        panel2.add(harnessPanel);

                        harnessPanel.repaint();
                        harnessPanel.validate();
                    }
                    panel2.repaint();
                    panel2.validate();
                }
                jframe.add(scrollFrame);
                jframe.add(container);

                jframe.pack();
                jframe.setLocationRelativeTo(null);
                jframe.setVisible(true);

            }

            private JPanel createSquareJPanel(Color color, int size1, int size2)
            {
                JPanel tempPanel = new JPanel();
                tempPanel.setBackground(color);
                tempPanel.setMinimumSize(new Dimension(size1, size2));
                tempPanel.setMaximumSize(new Dimension(size1, size2));
                tempPanel.setPreferredSize(new Dimension(size1, size2));
                return tempPanel;
            }

            public static void main (String args[]){
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        Form3 myF=new Form3();

                    }
                });
            };
        }

私のアプリの写真: ここに画像の説明を入力

実際の状態: ここに画像の説明を入力

4

1 に答える 1

5

JFrameデフォルトで a を使用BorderLayoutします。デフォルトの位置 (指定しない場合) はCENTERです。

BorderLayout1 つのコンポーネントのみが 5 つの使用可能な位置のいずれかを占めることができます。

だからあなたがするとき...

jframe.add(scrollFrame);
jframe.add(container);

scrollFrameを中央の位置に追加し、追加すると効果的に削除されますcontainer(実際には削除されませんが、結果はほぼ同じです)。

位置制約を指定してみてください。例えば...

jframe.add(scrollFrame);
jframe.add(container, BorderLayout.SOUTH);

詳細については、BorderLayoutの使用方法を参照してください。

于 2013-08-28T07:02:56.770 に答える