如何制作;类似于图表的东西;可在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,这就是您现在使用的宽度)。您可以对所有其他坐标和尺寸执行相同的操作。