如何制作;类似于图表的东西;可在Java awt图形中调整大小

如何制作;类似于图表的东西;可在Java awt图形中调整大小,java,graphics,awt,diagram,window-resize,Java,Graphics,Awt,Diagram,Window Resize,我已经知道了: 到目前为止还不错,我现在想知道的是如何更改程序以使其可调整大小。到目前为止,只有两半部分始终粘在侧面并被拉开 这是我目前的代码: import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.awt.geom.*; public class Program extends JFrame { DrawStuff pn1 = new DrawStuff(); public Program

我已经知道了: 到目前为止还不错,我现在想知道的是如何更改程序以使其可调整大小。到目前为止,只有两半部分始终粘在侧面并被拉开

这是我目前的代码:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;

public class Program extends JFrame
{

DrawStuff pn1 = new DrawStuff();
public Program () 
{
    setTitle("Program");
    setSize(516,500);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    add(pn1, BorderLayout.CENTER);
    setLocationRelativeTo(null);
    setVisible(true);
    setResizable(true);
}

public static void main(String[] args) {
    new Program();

}

private class DrawStuff extends JPanel {
    public void paintComponent(Graphics g){
        int w = this.getWidth();
        int h = this.getHeight();

        Graphics2D graph2 = (Graphics2D)g;

        int y = h;
        int x = w - 10;
        int bluerects = 0;
        int greenrects = 0;
        int re = 0, gr = 0, bl = 0;

        while (bluerects < 26)
        {
            Shape drawRect2 = new Rectangle2D.Float(x,y,10,h);
            graph2.setColor(new Color(re,gr,bl));
            graph2.fill(drawRect2);
            x = x - 10;
            y = y - 16;
            bluerects++;
            if(gr == 240) gr = 0;
            else gr = gr + 30;
        }   
        x = 0;
        y = h;
        gr = 0;
        while (greenrects < 25)
        {
            Shape drawRect3 = new Rectangle2D.Float(x-10,y,10,h);
            graph2.setColor(new Color(re,gr,bl));
            graph2.fill(drawRect3);
            x = x + 10;
            y = y - 16;
            greenrects++;
            if (bl == 240) bl = 0;
            else bl = bl + 30;
        }   


    }
}
}
import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
导入java.awt.geom.*;
公共类程序扩展JFrame
{
DrawStuff pn1=新DrawStuff();
公共计划()
{
设置标题(“程序”);
设置大小(516500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
添加(pn1,BorderLayout.CENTER);
setLocationRelativeTo(空);
setVisible(真);
可设置大小(真);
}
公共静态void main(字符串[]args){
新程序();
}
私有类DrawStuff扩展了JPanel{
公共组件(图形g){
int w=this.getWidth();
int h=this.getHeight();
图形2d graph2=(图形2d)g;
int y=h;
int x=w-10;
int bluerects=0;
int greenrects=0;
int re=0,gr=0,bl=0;
while(bluerects<26)
{
形状drawRect2=新矩形2D.浮动(x,y,10,h);
图2.setColor(新颜色(re、gr、bl));
图2.填料(图纸2);
x=x-10;
y=y-16;
bluerects++;
如果(gr==240)gr=0;
否则gr=gr+30;
}   
x=0;
y=h;
gr=0;
while(greenrects<25)
{
形状drawRect3=新矩形2D.浮动(x-10,y,10,h);
图2.setColor(新颜色(re、gr、bl));
图2.填料(图纸3);
x=x+10;
y=y-16;
greenrects++;
如果(bl==240)bl=0;
否则bl=bl+30;
}   
}
}
}

谢谢你的帮助。:)

调整窗口大小时,用户应该看到什么?相同的图像,但它应该被拉伸或压在一起。简单的数学是这里的关键。例如,代替
x=x-10,使用与尺寸相关的量,如
x=x-w/51(因为默认宽度是516,516÷51大约是10,这就是您现在使用的宽度)。您可以对所有其他坐标和尺寸执行相同的操作。