2013-08-07 182 views
0

我知道這聽起來像一個簡單的問題,但我正在使用按鈕等進行簡單的文本冒險,而我無法弄清楚如何將Jpanel添加到我的JFrame中。我的JPanel有一堆按鈕和圖形和東西,如果這有所作爲。我已經提供了下面的代碼。框架面板=新框架();是擴展JPanel的另一個類。我知道它被稱爲「框架」的混淆,因爲我曾經讓它擴展JFrame。無論如何,我的代碼不會像其應該生成的按鈕,圖形等。謝謝,將JPanel添加到JFrame中

package sonomaroller; 

import javax.swing.*; 
import java.awt.*; 
import static javax.swing.JFrame.*; 

public class SonomaRoller extends JFrame { 

    public static Dimension size = new Dimension(550,550); //Dimension of Frame 
    public static String title = "Sonoma Roller v0.00" ; 


    public SonomaRoller(){ 

     setTitle(title); 
     setSize(size); 
     setResizable(false); 
     setLocationRelativeTo(null); // null centers window on screen 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     System.out.println("hello?"); 
     //setLayout(null); 
     setVisible(true); 

    } 


    public static void main(String[] args) { 

     SonomaRoller object1=new SonomaRoller(); 
     frame panel=new frame(); 


    } 
} 

回答

0

嘗試

SonomaRoller object1=new SonomaRoller(); 
frame panel=new frame(); 
object1.getContentPane().add(panel); 

或者只是

object1.add(panel); 

來源:JFrame#getContentPane()Container#add(Component)

這裏的一些代碼,工作是否有幫助:

import java.awt.*; 
import javax.swing.*; 

public class MyFrame extends JFrame { 

    public MyFrame() { 
     add(new MyPanel()); 
     setSize(640, 480); 
    } 

    public static void main(String[] args) throws Exception { 
     SwingUtilities.invokeAndWait(new Runnable() { 
      @Override public void run() { 
       new MyFrame().setVisible(true); 
      } 
     }); 
    } 
} 

class MyPanel extends JPanel { 

    @Override protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.fillOval(20, 20, 80, 80); 
    } 
} 
+0

我把它在主要和它沒有工作:/ –

+0

你能告訴我們你的其他班級的代碼?另外,確保你沒有將佈局管理器設置爲null。優先使用[這些](http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)佈局管理器,並設置組件的首選大小。 – sgbj

+0

我已經從其他課上傳了我的代碼。謝謝你的幫助! –

0

也許是這樣的...?

package sonomaroller; 

import javax.swing.*; 
import java.awt.*; 
import javax.swing.JFrame.*; 

public class SonomaRoller extends JFrame { 

    public static Dimension size = new Dimension(550,550); //Dimension of Frame 
    public static String title = "Sonoma Roller v0.00" ; 


    public SonomaRoller(){ 

     setTitle(title); 
     setSize(size); 
     setResizable(false); 
     setLocationRelativeTo(null); // null centers window on screen 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     System.out.println("hello?"); 
     //setLayout(null); 
     setVisible(true); 

     frame panel=new frame(); 
     setContentPane(panel); 
    } 


    public static void main(String[] args) { 

     SonomaRoller object1=new SonomaRoller(); 

    } 
} 
0

這是我常做:

public class SonomaRoller extends JFrame { 

    public SonomaRoller(){ 
     setLayout(new BorderLayout(0, 0)); 
     JPanel newPanel = new JPanel(); 
     getContentPane().add(newPanel); 
    } 
} 
0

這就是問題所在:

frame panel=new frame(); 

,就把這行,而不是上面的代碼:

Frame frame = new Frame(); 
Panel panel = new Panel(); 
frame.add(panel);