为什么我的所有形状都卡在 JPanel 的左上角?
Why are all of my shapes stuck in the top left of my JPanel?
我创建了一个 JPanel,里面满是圆圈、线条和矩形,这些圆圈、线条和矩形应该随机生成在 JPanel 周围,但是圆圈和矩形只出现在 JPanel 的左上角,而不是随机出现在整个 JPanel 中JPanel,而线条完美无缺。我想知道是否有人可以帮助我?
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JPanel;
/**
*
*
*/
public class RandomShapesPanel extends JPanel
{
private Color rColor;
private Random rGen;
private Random num;
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
int x = this.getWidth();
int y = getHeight();
int x1, y1, x2, y2;
rGen = new Random();
num = new Random();
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = rGen.nextInt(x - 1) + 1;
x2 = rGen.nextInt(x - 1) + 1;
y1 = rGen.nextInt(y - 1) + 1;
y2 = rGen.nextInt(y - 1) + 1;
g.drawLine(x1, y1, x2, y2);
}
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(50) + 10;
y2 = num.nextInt(50) + 10;
g.drawRect(x1, y1, x2, y2);
}
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(50) + 10;
y2 = num.nextInt(50) + 10;
g.fillRect(x1, y1, x2, y2);
}
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(50) + 10;
y2 = num.nextInt(50) + 10;
g.drawOval(x1, y1, x2, y2);
}
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(50) + 10;
y2 = num.nextInt(50) + 10;
g.fillOval(x1, y1, x2, y2);
}
}
}
你必须像这样定义它们:
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(x-50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(y-50) + 10;
y2 = num.nextInt(50) + 10;
g.drawRect(x1, y1, x2, y2);
}
我创建了一个 JPanel,里面满是圆圈、线条和矩形,这些圆圈、线条和矩形应该随机生成在 JPanel 周围,但是圆圈和矩形只出现在 JPanel 的左上角,而不是随机出现在整个 JPanel 中JPanel,而线条完美无缺。我想知道是否有人可以帮助我?
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JPanel;
/**
*
*
*/
public class RandomShapesPanel extends JPanel
{
private Color rColor;
private Random rGen;
private Random num;
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
int x = this.getWidth();
int y = getHeight();
int x1, y1, x2, y2;
rGen = new Random();
num = new Random();
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = rGen.nextInt(x - 1) + 1;
x2 = rGen.nextInt(x - 1) + 1;
y1 = rGen.nextInt(y - 1) + 1;
y2 = rGen.nextInt(y - 1) + 1;
g.drawLine(x1, y1, x2, y2);
}
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(50) + 10;
y2 = num.nextInt(50) + 10;
g.drawRect(x1, y1, x2, y2);
}
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(50) + 10;
y2 = num.nextInt(50) + 10;
g.fillRect(x1, y1, x2, y2);
}
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(50) + 10;
y2 = num.nextInt(50) + 10;
g.drawOval(x1, y1, x2, y2);
}
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(50) + 10;
y2 = num.nextInt(50) + 10;
g.fillOval(x1, y1, x2, y2);
}
}
}
你必须像这样定义它们:
for(int i = 1; i <= 35; i++)
{
rColor = new Color(rGen.nextInt(256),rGen.nextInt(256),
rGen.nextInt(256));
g.setColor(rColor);
x1 = num.nextInt(x-50) + 10;
x2 = num.nextInt(50) + 10;
y1 = num.nextInt(y-50) + 10;
y2 = num.nextInt(50) + 10;
g.drawRect(x1, y1, x2, y2);
}