1

1つのJFrameフォームに3つのパネルを追加しようとしています。パネルを3つだけ追加すると表示されますが、分割ペインにパネルを追加すると何も表示されません。次のコードでエラーが発生している可能性があります。

 import javax.swing.*;
 import java.awt.*;
 class paneltest extends JFrame{
 paneltest()
 {
   Container cp=this.getContentPane();
   cp.setLayout(null);
   panel1 p1= new panel1();
   panel2 p2= new panel2();
   panel3 p3= new panel3();
   cp.add(p1);
   cp.add(p2);
   cp.add(p3);
   Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();

   p1.setBounds(0,0,screenSize.width/3,screenSize.height);
   p2.setBounds(screenSize.width/3,0,screenSize.width/3,screenSize.height);
   p3.setBounds(2*(screenSize.width/3),0,screenSize.width/3,screenSize.height); 

   try{

       JSplitPane splitPaneLeft = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
       JSplitPane splitPaneRight = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
        splitPaneLeft.setLeftComponent( p1 );
        splitPaneLeft.setRightComponent( p2 );
        splitPaneRight.setLeftComponent( splitPaneLeft );
        splitPaneRight.setRightComponent( p3 );

        JPanel panelSplit = new JPanel();
        panelSplit.add(splitPaneRight);
        cp.add(panelSplit);
       panelSplit.setVisible(true);
       }
    catch(Exception ex)
    {

     JOptionPane.showMessageDialog(null,"exception occured"+ex);   

     }
   }
     public static void main(String arsg[])
    {

       paneltest frm= new paneltest();
       frm.show ();

       }

       }
       class panel1 extends JPanel
        {
        panel1()
           {
           setLayout(new FlowLayout());
           JLabel l1= new JLabel("panel1");
           add(l1);


           }    

           }

         class panel2 extends JPanel
        { 
         panel2()
           {
           setLayout(new FlowLayout());
           JLabel l1= new JLabel("panel2");
          add(l1);

           }    

         }
      class panel3 extends JPanel
       {
       panel3()
        {
          setLayout(new FlowLayout());
          JLabel l1= new JLabel("panel3");
          add(l1);


         }    

        }
4

1 に答える 1

2

行を削除しますcp.setLayout(null)。これにより、最初の問題が修正されます。

その後:

  • コードをインデントする
  • Javaの命名規則を尊重する
  • 直後に分割ペインにパネルを追加する場合は、コンテンツペインにパネルを追加しないでください。コンポーネントは、単一の親に追加できます。それらを両方に追加することは意味がありません
  • 使用しないでくださいsetBounds()。それがレイアウトマネージャーの役​​割です
  • JPanelとJFrameを拡張しないでください。それらを使用する
  • Swingのスレッドポリシーを尊重します。
  • しないでくださいcatch (Exception)
于 2012-12-25T08:59:41.283 に答える