不好意思,之前描述不大清楚
包括之前那个红线的代码,感觉是个人电脑问题。
代码D2运行结果总是有D1的影响,并且没有*出现
package test6;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class D1 {
public static void main(String[] args) {
JFrame frame = new JFrame("描绘");
frame.setSize(700,500);;
MyPanel panel = new MyPanel();
frame.add(panel);
frame.setVisible(true);
}
}
class MyPanel extends JPanel{
public void paint(Graphics g) {
g.setColor(Color.RED);
g.fillRect(30,50,200,300);
}
}
package test6;
import java.awt.*;
import javax.swing.*;
public class D2 {
public static void main(String[] args) {
JFrame w = new JFrame();
w.setSize(1024,768);
w.setBackground(Color.PINK);
MyPanel mp = new MyPanel();
w.add(mp);
w.setVisible(true);
}
}
class MyPanel extends JPanel{
public void paint(Graphics g) {
for(int i=0;i<300;i++) {
g.setColor(new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255)));
g.drawString("*", (int)(Math.random()*1024), (int)(Math.random()*768));
}
}
}
代码D3的问题是运行后没有球出现
package test6;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class D3 {
public static void main(String[] args) {
JFrame w = new JFrame();
w.setSize(300,400);
BallPanel p = new BallPanel();
w.add(p);
w.setVisible(true);
p.go();
}
}
class BallPanel extends JPanel{
int x = 30;
int y = 30;
public void panint(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.BLACK);
g.fillOval(x, y, 20, 20);
}
public void go() {
while (true) {//
y++;
if(y>this.getHeight()-20) {
y = 0;
}
repaint();
try {
Thread.sleep(3);
}catch(Exception e) {
}
}
}
}
代码D5的问题是只出现左上角一片,没有其他出现
package test6;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class D5 {
public static void main(String[] args) {
JFrame w = new JFrame();
w.setSize(1024,768);
SnowPanel p = new SnowPanel();
w.add(p);
w.setVisible(true);
p.init();
p.go();
}
}
class SnowPanel extends JPanel{
int x[]=new int[300];
int y[]=new int[300];
public void init() {
for(int i=0;i>300;i++) {
x[i]=(int)(Math.random()*getWidth());
y[i]=(int)(Math.random()*getHeight());
}
}
public void paint(Graphics g) {
g.setColor(Color.BLUE);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
for(int i=0;i<300;i++) {
g.drawString("*",x[i],y[i]);
}
}
public void go() {
while(true) {
for(int i = 0;i<300;i++) {
y[i]++;
if(y[i]>getHeight()) {
y[i]=0;
}
}
try {
Thread.sleep(30);
}catch(Exception e) {}
repaint();
}
}
}
不知道你的最新效果是什么?但是你这个方法我帮你注释了,应该是你的高度写得不对。另外请关注我,学习专业的swing技术等开发
public void paint(Graphics g) {
// 设置画笔颜色
g.setColor(Color.RED);
/**
* 第一个参数:启动坐标x
* 第二个参数:启动坐标y
* 第三个参数:图形的宽度
* 第四个参数:图形的高度
*/
g.fillRect(0,250,1000, 1);
}
书上代码截图出来看一下
这就是绘制一个填充了颜色的矩形,你把1换成100 1的话太小了 只有一根线的