import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.lang.*;class mpanel extends JPanel implements Runnable
{
Thread t;
int i;
private static final Color[] colors={Color.black,Color.blue,Color.cyan,Color.darkGray,Color.gray,Color.green,Color.lightGray,Color.magenta,Color.orange,Color.pink,Color.red,Color.white,Color.yellow}; public mpanel()
{
t=new Thread(this);
t.start();
}
public void run()
{
while(true)
{
i=(int)(Math.round(Math.random()*12));
repaint(); try
{
t.sleep(1000);
}
catch (InterruptedException e){}
} } public void paint(Graphics g)
{
g.setColor(colors[i]);
g.fillOval(0,0,getSize().width,getSize().height); }}public class ColorOvals extends JFrame
{
public int N;
public int M;
public ColorOvals(String s)
{
super(s);
N=5;
M=100;
Container con=getContentPane(); addWindowListener(new mywin()); con.setLayout(new GridLayout(N,N));
for(int k=1;k<=N*N;k++)
{
con.add(new mpanel());
}
}
public class mywin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
} public static void main(String args[])
{
ColorOvals frm=new ColorOvals("ColorOvals");
frm.setSize(700,600);
frm.show(); }}N,M分别是几秒变换一次,窗口中有多少个网络?现在我想把N,M的值,在程序的执行的时候,跟在命令行后面,应该怎么弄呢?还有帮我看下,线程中有什么问题没有,虽然程序是可以执行的.但是我都不理解线程这个东西.SLEEP(1000),就是暂停1秒然后继续执行吗?
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.lang.*;class mpanel extends JPanel implements Runnable
{
Thread t;
int i;
private static final Color[] colors={Color.black,Color.blue,Color.cyan,Color.darkGray,Color.gray,Color.green,Color.lightGray,Color.magenta,Color.orange,Color.pink,Color.red,Color.white,Color.yellow}; public mpanel()
{
t=new Thread(this);
t.start();
}
public void run()
{
while(true)
{
i=(int)(Math.round(Math.random()*12));
repaint(); try
{
t.sleep(1000);
}
catch (InterruptedException e){}
} } public void paint(Graphics g)
{
g.setColor(colors[i]);
g.fillOval(0,0,getSize().width,getSize().height); }}public class ColorOvals extends JFrame
{
public int N;
public int M;
public ColorOvals(String s)
{
super(s);
N=5;
M=100;
Container con=getContentPane(); addWindowListener(new mywin()); con.setLayout(new GridLayout(N,N));
for(int k=1;k<=N*N;k++)
{
con.add(new mpanel());
}
}
public class mywin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
} public static void main(String args[])
{
ColorOvals frm=new ColorOvals("ColorOvals");
frm.setSize(700,600);
frm.show(); }}N,M分别是几秒变换一次,窗口中有多少个网络?现在我想把N,M的值,在程序的执行的时候,跟在命令行后面,应该怎么弄呢?还有帮我看下,线程中有什么问题没有,虽然程序是可以执行的.但是我都不理解线程这个东西.SLEEP(1000),就是暂停1秒然后继续执行吗?
解决方案 »
- 将一个浮点数提供小数位如何进行四舍五入处理?
- JAVA面试题解惑系列(三)——变量(属性)的覆盖
- 从InputStream中read出来个"-1",代表什么?
- 关于打包生成exe可执行文件问题
- 怎样将图片转为二进制流?
- jdk安装后不能正常使用,Error occurred during initialization of VM,什么原因?
- 用JAVA做界面,怎样才能做得漂亮些?
- 问个java扩展机制问题..
- 关于对数据库操作的一个小问题!(急!急!急!急!)
- macOS更新到10.15Catalina版本后logisim打不开了
- jsp问题。请大哥进来看看 在线等
- 为什么我启动ireport.bat时界面都是方框?
<body>
再试一次
</body>
</html>
{
ColorOvals frm=new ColorOvals("ColorOvals");
frm.setSize(
Integer.parseInt(args[0]),
Integer.parseInt(args[1]));
frm.show();
}
con.setLayout(new GridLayout(N,N));
语句,使用GridLayout指定。sleep(1000)就是暂停1秒。这个程序很简单,每个网格是一个类mpanel的实例,而每个mpanel的实例分别运行于各自独立的线程中。每隔1秒,mpanel随机更改自身的颜色索引。
i=(int)(Math.round(Math.random()*12));
然后重画自身。
repaint()
从而触发paint方法,改变自身颜色。网格是在ColorOvals类的构造函数中被创建的,该类是一个Frame,版面布局使用GridLayout。
public ColorOvals(String s,int n,int m)
{
super(s);
N=n;
M=m;
...2、在main中传入n,m参数
public static void main(String args[])
{
if (args.length != 2)
{
System.err.println("Usage: cmd n m");
System.exit(1);
}
try {
ColorOvals frm=new ColorOvals("ColorOvals",Integer.parseInt(args[0]),Integer.parseInt(args[1]));
frm.setSize(700,600);
frm.show();
}
catch (NumberFormatException e)
{
e.printStackTrace();
System.exit(1);
}}