2013-08-07 11 views
0

Я знаю, это звучит как простой вопрос, но я делаю простое текстовое приключение с кнопками и т. Д., И я не могу понять, как добавить свой Jpanel в свой JFrame. У моей JPanel есть куча кнопок, графика и прочее, если это имеет значение. Я привел приведенный ниже код. frame panel = new frame(); это другой класс, который расширяет 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

Можете ли вы показать нам код для вашего другого класса? Кроме того, убедитесь, что вы не устанавливаете менеджеров макетов на нуль. Предпочитайте использовать [эти] (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); 
Смежные вопросы