2013-05-11 24 views
1

我想在同一個幀中使用2個面板。但按鈕不起作用?我怎麼做?我想把幾個按鈕放在一個面板中,其他面板也會做一些其他的東西。在同一幀中使用2個面板

public class TestingPage extends JFrame { 

    JFrame frame=new JFrame(); 
    JPanel panel01; 
    JPanel panel02; 
    JButton bttn1; 


    /** 
    * @param args 
    */ 
    public TestingPage(){ 
     super("Test"); 
     setBounds(700,700,650,500); 
     setVisible(true); 
     setLayout(new BorderLayout()); 
     Container cont=frame.getContentPane(); 

     panel01=new JPanel(); 
     panel02=new JPanel(); 
     cont.add(panel01,BorderLayout.EAST); 
     cont.add(panel02,BorderLayout.WEST); 

    //setLayout(new BorderLayout()); 

    bttn1=new JButton("Button"); 
    bttn1.setBounds(77, 75, 100,26); 
    add(bttn1); 

    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Runnable guiCreator= new Runnable(){ 
     @Override 
     public void run (){ 
      TestingPage page=new TestingPage(); 
     } 
    }; 
    javax.swing.SwingUtilities.invokeLater(guiCreator); 
    } 
} 
+0

你不添加按鈕,任何面板,而是框架本身。嘗試使用panl01.add而不是 – MadProgrammer 2013-05-11 02:09:16

+0

我做到了。框架上沒有任何東西。 – 2013-05-11 02:13:05

+0

不要設置頂級容器的大小。而是佈置內容並調用'pack()'。 – 2013-05-11 06:28:33

回答

3

你有三個問題......

  • 你不添加按鈕,任何板,但在框架本身
  • 你打電話setVisible你以前完成創建UI。這是很常見的問題。如果您需要在框架可見內容後添加內容,則需要致電revalidate以確保佈局已更新
  • 您是班級延伸JFrame,但您創建了另一個JFrame並使用它的內容窗格添加您的成分,但讓你TestingPage可見...

enter image description here

import java.awt.BorderLayout; 
import java.awt.Container; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class TestingPage extends JFrame { 

// JFrame frame = new JFrame(); 
    JPanel panel01; 
    JPanel panel02; 
    JButton bttn1; 

    public TestingPage() { 
     super("Test"); 
     setBounds(700, 700, 650, 500); 
     setLayout(new BorderLayout()); 
     Container cont = getContentPane(); 

     panel01 = new JPanel(); 
     panel02 = new JPanel(); 
     cont.add(panel01, BorderLayout.EAST); 
     cont.add(panel02, BorderLayout.WEST); 

     //setLayout(new BorderLayout()); 

     bttn1 = new JButton("Button"); 
     panel01.add(bttn1); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Runnable guiCreator = new Runnable() { 
      @Override 
      public void run() { 
       TestingPage page = new TestingPage(); 
      } 
     }; 
     javax.swing.SwingUtilities.invokeLater(guiCreator); 
    } 
} 
+0

謝謝。還有一件事 - 我如何解決任何按鈕的位置? – 2013-05-11 02:32:33

+0

一般來說,我不會。問題是,Java是一種跨平臺的語言,這意味着它可能在其他平臺上運行時看起來不完全一樣(字體大小和DPI不同),這意味着組件的任何絕對定位/大小都不會是對的。相反,利用佈局管理器... – MadProgrammer 2013-05-11 02:36:16

+0

感謝您的幫助 – 2013-05-11 02:41:16

相關問題