0

我知道这听起来像一个简单的问题,但我正在用按钮等进行简单的文本冒险,我不知道如何将我的 Jpanel 添加到我的 JFrame 中。我的 JPanel 有一堆按钮和图形之类的东西,如果这有所作为的话。我提供了下面的代码。框架面板=新框架();是另一个扩展 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();


    }
}
4

4 回答 4

0

这就是我通常的做法:

public class SonomaRoller extends JFrame {

    public SonomaRoller(){
        setLayout(new BorderLayout(0, 0));
        JPanel newPanel = new JPanel();
        getContentPane().add(newPanel);
    }
}
于 2013-08-15T18:32:51.550 回答
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();

    }
}
于 2013-08-07T02:25:41.027 回答
0

这就是问题 :

frame panel=new frame();

把这一行代替上面的代码:

Frame frame = new Frame();
Panel panel = new Panel();
frame.add(panel);
于 2014-12-25T09:36:19.900 回答
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);
    }
}
于 2013-08-07T02:11:42.017 回答