如何将宽度,高度设置为Jframe?

时间:2013-11-05 00:57:17

标签: 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.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);
    }    
}

JFrame部分

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的大小,无论它的设置或更改为

1 个答案:

答案 0 :(得分:1)

frame.add(component);

错了。请参阅Oracle关于addComponent的在线文档。

  

java.lang.Object中

  java.awt.Component

     java.awt.Container

       javax.swing.JComponent
     

作为一个方便的添加和它的变种,删除和setLayout已经   必要时重写以转发到contentPane。这意味着你   可写:

   frame.add(child);   
     

孩子将被添加到contentPane。