Java 如何设置Jframe的宽度和高度?
您好,我正在努力使我的getwidth和getheight可以从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
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添加到任何类型的容器中