【问题标题】:Adding a JPanel into a JFrame将 JPanel 添加到 JFrame
【发布时间】:2013-08-08 05:51:55
【问题描述】:

我知道这听起来像是一个简单的问题,但我正在使用按钮等进行简单的文本冒险,但我不知道如何将我的 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();


    }
}

【问题讨论】:

    标签: swing user-interface jframe jpanel


    【解决方案1】:

    试试

    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);
        }
    }
    

    【讨论】:

    • 你能告诉我们你其他班级的代码吗?此外,请确保您没有将布局管理器设置为空。更喜欢使用 these 布局管理器并设置组件的首选大小。
    • 我已经从其他类上传了我的代码。感谢您的帮助!
    【解决方案2】:

    也许是这样...?

    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();
    
        }
    }
    

    【讨论】:

      【解决方案3】:

      这是我通常的做法:

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

      【讨论】:

        【解决方案4】:

        这就是问题所在:

        frame panel=new frame();
        

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-02
          • 2011-09-13
          相关资源
          最近更新 更多