2016-03-21 15 views
0

Jframeに3 JPanelsを追加しました。それらのJPanelsにはO +画像とラベルが含まれています。すべてのJPanelは、JFrameに表示されていません。

JFrameを表示しようとすると、すべての要素が正しく表示されません。 SwingUtilities.invokeLaterをを使用して - (?)あなたが言及した3枚のパネルがbtnPanel、okBtnとextPanelあると仮定すると、あなたは私はあなたのコードを起動した場合、上記コピーするのを忘れて前のボタンを含む

 JButton next=new JButton("next"); 
     next.addMouseListener(new MouseListener() { 

      @Override 
      public void mouseReleased(MouseEvent e) {} 
      @Override 
      public void mousePressed(MouseEvent e) {} 
      @Override 
      public void mouseExited(MouseEvent e) {} 
      @Override 
      public void mouseEntered(MouseEvent e) {} 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       System.out.println("mouse next clicked"); 
       nextAction(n, tempList); 
      } 
     }); 

     JButton ok= new JButton("ok"); 
     JLabel pageLabel= new JLabel("page"+x); 
     btnPanel.add(pre); 
     btnPanel.add(pageLabel); 
     btnPanel.add(next); 
     okBtn.add(ok,BorderLayout.PAGE_END); 
     layout.setHgap(10); 
     layout.setVgap(10); 
     extPanel.setSize(50,50); 
     extPanel.setLayout(layout); 

     //frame.setLayout(new FlowLayout()); 
     //frame.setLayout(new GridLayout()); 
     //frame.setLayout(new BorderLayout()); 

     frame.setLayout(new BoxLayout(frame.getContentPane(),BoxLayout.Y_AXIS)); 
     frame.add(extPanel); 
     frame.add(btnPanel); 
     frame.add(okBtn,BorderLayout.PAGE_END); 

     frame.pack(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
+0

GUIの変更は、イベントディスパッチャスレッドを使用して行う必要があります。 Javaでは、これは 'SwingUtilities.invokeLater(Runnable run)'によって実現されます。あなたはこれをしていますか? – npinti

+1

あなたの問題を示す[実行可能な例](https://stackoverflow.com/help/mcve)を提供することを検討してください。これはコードダンプではありませんが、あなたがしていることの例はあなたが持っている問題を強調表示します。これにより混乱が少なくなり、より良いレスポンスが得られます – MadProgrammer

+3

'MouseListener'sを' JButton'sと一緒に使用しないでください。キーボードの使用は気に入らないのですか?代わりに 'ActionListener'を使用してください。[ボタン、チェックボックス、ラジオボタンの使い方](http://docs.oracle.com/javase/tutorial/uiswing/components/button.html)と[アクションリスナー](http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html)を参照してください。また、[CardLayoutの使い方](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)をご覧ください。 – MadProgrammer

答えて

1

を助けてくださいnpintiはコメントしました - 私は小さな窓を得る。

enter image description here

私はあなたのコードでこのによってフレームを交換しました。私のメインクラスのテストはJFrameから拡張されています。

「正しく」とはどういう意味ですか?

+0

私は最初のパネルに画像とラベルを追加しました。画像が表示されているが表示されていない画像がある – manju

+0

@manjuその問題の例を更新してください。画像とラベルをどのように追加しますか? – RubioRic

0
 Statement st = null; 

     ResultSet rs = null; 
     String url = "jdbc:mysql://localhost:3306/jframe"; 
     String user = "root"; 
     String password = "root"; 

     ArrayList<JPanel> panelList =new ArrayList<JPanel>(); 


      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection(url, user, password); 
      st = con.createStatement(); 
      String query ="SELECT * FROM sample"; 
      rs = st.executeQuery(query); 
      int k= 1; 
    if(rs.next()){ 

     do{ 

      JPanel panel1= new JPanel(); 
      String s1= rs.getString("id"); 
      String s2= rs.getString("name"); 
      String s3= rs.getString("path"); 
      String s4= rs.getString("duration"); 
      String s5= rs.getString("date"); 

      ImageIcon image = new ImageIcon(s3); 
      JLabel idLabel= new JLabel(s1); 
      JLabel nameLabel= new JLabel(s2); 
      JLabel imageLabel = new JLabel("", image, JLabel.CENTER); 
      //JLabel imageLabel= new JLabel(image); 
      //imageLabel.setSize(100,100); 

      //imageLabel.setOpaque(true); 
      JLabel durationLabel= new JLabel(s4); 
      JLabel dateLabel= new JLabel(s5); 
      panel1.add(idLabel); 
      panel1.add(imageLabel); 
      panel1.add(nameLabel); 
      panel1.add(durationLabel); 
      panel1.add(dateLabel); 
      panel1.setLayout(new FlowLayout()); 
      panel1.setName("panel"+k); 
      //panel1.setSize(10,10); 
      //panel1.setBorder(BorderFactory.createLineBorder(Color.blue, 4, true)); 
      panel1.setBorder(blueBorder); 
      panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS)); 
      final JPanel tempPanel= panel1; 

      panel1.addMouseListener(new MouseListener() { 

       @Override 
       public void mouseReleased(MouseEvent arg0) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void mousePressed(MouseEvent me) { 


       } 

       @Override 
       public void mouseExited(MouseEvent arg0) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void mouseEntered(MouseEvent arg0) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void mouseClicked(MouseEvent me) { 
        JPanel test= (JPanel)me.getComponent(); 
        MainClass.panelColor(test); 

       } 
      }); 
      panelList.add(panel1); 
      panelList.size(); 
      k++; 
     }while(rs.next()); 

    }//if 
    int i; 
    do{ 
    for (i=0;i<4;i++){ 
     extPanel.add(panelList.get(i));  
    }//for 
    int x=1; 
    display(panelList,extPanel,x); 
    }while(1<0); 


    }catch(Exception e){ 
     System.out.println(e); 
    }//catch 
} 
public static void nextAction(int n,ArrayList<JPanel> panelList){ 
    try{ 
    System.out.println("next action executed"); 
    extPanel.removeAll(); 
    btnPanel.removeAll(); 
    okBtn.removeAll(); 
    int i; 
    for(i=4*n;i<4*(n+1);i++){ 
     extPanel.add(panelList.get(i)); 
     //Panel2 pan= new Panel2(extPanel); 
    } 

    int x=n+1; 
    display(panelList, extPanel, x); 
    }catch(Exception e){ 
     System.out.println(e); 
    } 
} 

public static void preAction(int n,ArrayList<JPanel> panelList){ 
    try{ 
    System.out.println("next action executed"); 
    extPanel.removeAll(); 
    btnPanel.removeAll(); 
    okBtn.removeAll(); 
    int i; 
    for(i=(n-1)*4;i<4*n;i--){ 
     extPanel.add(panelList.get(i)); 
    } 

    int x=n-1; 
    display(panelList, extPanel, x); 
    }catch(Exception e){ 
     System.out.println(e); 
    } 
} 
public static void display(ArrayList<JPanel> list,JPanel extPanel,int x){ 

    final int n=x; 
    int temp=1; 
    final ArrayList<JPanel> tempList= list; 
    JButton pre=new JButton("previous"); 
    if(x==1) { 
     pre.setVisible(false); 
    } 
    pre.addMouseListener(new MouseListener() { 

     @Override 
     public void mouseReleased(MouseEvent arg0) {} 
     @Override 
     public void mousePressed(MouseEvent arg0) {} 
     @Override 
     public void mouseExited(MouseEvent arg0) {}   
     @Override 
     public void mouseEntered(MouseEvent arg0) {} 

     @Override 
     public void mouseClicked(MouseEvent arg0) { 
      System.out.println("mouse pre clicked"); 
      preAction(n, tempList); 
     } 
    }); 


    JButton next=new JButton("next"); 
    next.addMouseListener(new MouseListener() { 

     @Override 
     public void mouseReleased(MouseEvent e) {} 
     @Override 
     public void mousePressed(MouseEvent e) {} 
     @Override 
     public void mouseExited(MouseEvent e) {} 
     @Override 
     public void mouseEntered(MouseEvent e) {} 
     @Override 
     public void mouseClicked(MouseEvent e) { 
      System.out.println("mouse next clicked"); 
      nextAction(n, tempList); 
     } 
    }); 
    JButton ok= new JButton("ok"); 
    JLabel pageLabel= new JLabel("page"+x); 
    btnPanel.add(pre); 
    btnPanel.add(pageLabel); 
    btnPanel.add(next); 
    okBtn.add(ok,BorderLayout.PAGE_END); 
    layout.setHgap(10); 
    layout.setVgap(10); 
    extPanel.setSize(50,50); 
    extPanel.setLayout(layout); 

    //frame.setLayout(new FlowLayout()); 
    GridLayout gr= new GridLayout(0,1); 
    frame.setLayout(gr); 

    //frame.setLayout(new BoxLayout(frame.getContentPane(),BoxLayout.Y_AXIS)); 
    frame.add(extPanel); 
    frame.add(btnPanel); 
    frame.add(okBtn,BorderLayout.PAGE_END); 

    frame.pack(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    temp=x; 
    }//method 
public static JPanel expMethod(JPanel jp){ 
    jp.setBorder(BorderFactory.createLineBorder(Color.red, 4, true)); 
    return jp; 
} 
+0

私は最初のパネルに画像を追加しましたが、画像は表示されていますが、画像は表示されません – manju

+0

私はImageIconがそのように使用されていないと思います。https://docs.oracle.com/javase/tutorial/uiswing/components /icon.html – RubioRic

関連する問題