大家帮忙看看我的问题。我在JPanel上面画点。源程序看下面。
问题1:我怎么限定点出现的范围在Panel上面?
问题2:第二次点按钮的时候第一次的点不消失?
package gemini;import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;public class Main {
public static void main(String[] args) {
// TODO 自动生成方法存根
Wind win = new Wind();
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
win.setBounds(100, 100, 450, 300);
win.setVisible(true);
}
}
class Wind extends JFrame {
public Wind() {
MyPanel panel = new MyPanel();
panel.setBackground(Color.BLACK);
JButton button = new JButton("Draw");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
repaint();
}
});
getContentPane().add(panel,BorderLayout.CENTER);
getContentPane().add(button, BorderLayout.SOUTH);
}
}
class MyPanel extends JPanel{
Random r = new Random();
public void paint(Graphics g) {
g.fillOval(r.nextInt(300), r.nextInt(300), 5, 5);
}
public MyPanel() {
super();
} public void update(Graphics g) {
paint(g);
}}
问题1:我怎么限定点出现的范围在Panel上面?
问题2:第二次点按钮的时候第一次的点不消失?
package gemini;import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;public class Main {
public static void main(String[] args) {
// TODO 自动生成方法存根
Wind win = new Wind();
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
win.setBounds(100, 100, 450, 300);
win.setVisible(true);
}
}
class Wind extends JFrame {
public Wind() {
MyPanel panel = new MyPanel();
panel.setBackground(Color.BLACK);
JButton button = new JButton("Draw");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
repaint();
}
});
getContentPane().add(panel,BorderLayout.CENTER);
getContentPane().add(button, BorderLayout.SOUTH);
}
}
class MyPanel extends JPanel{
Random r = new Random();
public void paint(Graphics g) {
g.fillOval(r.nextInt(300), r.nextInt(300), 5, 5);
}
public MyPanel() {
super();
} public void update(Graphics g) {
paint(g);
}}
解决方案 »
- 短信猫发不出消息 高手请进
- 有一个小问题,怎么也想不通,求助啊!
- 新手请问自建exception class
- 请问下开发java C/S结构的系统要用到哪些主要技术啊?
- 设计模式重要还要数据结构算法重要?
- 我是一个初学者,望大家帮助哈我啊!谢谢...
- 理行承诺,请hui_feng(盘桃2)来接分。
- java经典中文乱码问题,各位大侠教教我!!!!
- 请各位帮忙看一下这个有趣的问题!
- 问:在b/s结构中,如果要显示报表(包括需要饼图,直方图类),你通常会考虑怎么做?
- 把Connection设置null,有必要吗?设置Object为null是否释放资源?两个问题一并问
- 怎样生成可直接运行的jar文件?
Random r = new Random();
Vector<Dimension> ps = new Vector<Dimension>(); public void paint(Graphics g) {
Dimension d = new Dimension(r.nextInt(300), r.nextInt(300));
ps.add(d); for(Iterator it = ps.iterator(); it.hasNext();) {
d = it.next();
g.fillOval(
g.fillOval(d.width, d.height, 5, 5));
}
}
public MyPanel() {
super();
} public void update(Graphics g) {
paint(g);
}}
g.fillOval(g.fillOval(d.width, d.height, 5, 5));
你的意思是说,用一个数组将所有画过的点都存起来,再次绘图的时候将他们一起画出来?如果有很多很多点的话,会不会导致机器崩溃掉?
Random r = new Random();
Vector ps = new Vector();
public void paint(Graphics g) {
Dimension d = new Dimension(r.nextInt(300), r.nextInt(300));
ps.add(d); for (int i = 0; i < ps.size(); i++) {
d = (Dimension) ps.get(i);
g.fillOval(d.width, d.height, 5, 5);
}
} public void update(Graphics g) {
paint(g);
}
public MyPanel() {
super();
}
}
这样改一下就能用了。UnAgain()这个iterator是什么意思呢?