Java 如何设置Jframe的宽度和高度?

Java 如何设置Jframe的宽度和高度?,java,swing,jframe,size,paintcomponent,Java,Swing,Jframe,Size,Paintcomponent,您好,我正在努力使我的getwidth和getheight可以从Jframe自动分配 import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import javax.swing.JComponent; import java

您好,我正在努力使我的getwidth和getheight可以从Jframe自动分配

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import javax.swing.JComponent;
import java.awt.GradientPaint;
import java.awt.Polygon;
import java.awt.*;

/*
   component that draws the concert background
*/
public class Concertbackground
{  
    public void draw(Graphics g)
    {   
        // Recover Graphics2D 
        Graphics2D g2 = (Graphics2D) g;    
        //Background Top
        g2.setColor(Color.BLUE);
        Rectangle backgroundTop = new Rectangle (0, 0, getWidth(), getHeight() / 2); 
        g2.fill(backgroundTop);    
        // Background bottom
        g2.setColor(Color.GREEN);
        Rectangle backgroundBottom = new Rectangle (0, getHeight() / 2, getWidth(), getHeight() / 2); 
        g2.fill(backgroundBottom);
    }    
}
J6框架部件

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

public class Concert
{
   public static void main(String[] args)
   {
      JFrame frame = new JFrame();
      frame.setSize(1000, 800);
      frame.setTitle("Concert!");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
      ConcertComponent component = new ConcertComponent();
      frame.add(component);    
      frame.setVisible(true);
   }       
}
实际绘制我创建的类的部分

import java.awt.Graphics;
import javax.swing.JComponent;


public class ConcertComponent
{
    public void paintComponent(Graphics g)
    {
        ConcertSpeaker speaker1 = new ConcertSpeaker(400, 300);
        speaker1.draw(g);    
        ConcertSpeaker speaker2 = new ConcertSpeaker(0, 0);
        speaker2.draw(g);          
      Concertbackground background1 = new Concertbackground();
      background1.draw(g);           
    }    
}
如果我基本上不清楚,我想让我的getheight和getwidth等于Jframe大小,而不考虑它的设置或更改

frame.add(component);
这是错误的。请参阅Oracle关于和的在线文档

java.lang.Object

  java.awt.Component

     java.awt.Container

       javax.swing.JComponent
作为一种惯例,add及其变体、remove和setLayout已经 根据需要重写以转发到contentPane。这意味着你 可以写:

   frame.add(child);   
子项将被添加到contentPane

这是错误的。请参阅Oracle关于和的在线文档

java.lang.Object

  java.awt.Component

     java.awt.Container

       javax.swing.JComponent
作为一种惯例,add及其变体、remove和setLayout已经 根据需要重写以转发到contentPane。这意味着你 可以写:

   frame.add(child);   
子项将被添加到contentPane


getHeight
getWidth
返回当前JFrame的当前尺寸。你的确切意思是什么?
frame.setSize(1000800)
这确实设置了宽度和高度Blah,这意味着它的公共类组件没有扩展JComponent的部分,或者这无关紧要?好吧,nvm在这一部分,现在我不明白为什么它实际上不会绘制我的背景组件?这些代码都没有意义。您的类都不是从可绘制的父类扩展而来的,因此可以绘制对象,也不能将您的ConcreteComponent添加到任何类型的容器
getHeight
getWidth
当前返回JFrame的当前维度。你的确切意思是什么?
frame.setSize(1000800)
这确实设置了宽度和高度Blah,这意味着它的公共类组件没有扩展JComponent的部分,或者这无关紧要?好吧,nvm在这一部分,现在我不明白为什么它实际上不会绘制我的背景组件?这些代码都没有意义。您的类都不是从可绘制的父类扩展而来的,所以可以绘制对象,也不能将您的ConcreteComponent添加到任何类型的容器中