大家帮忙看看我的问题。我在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);
}}
解决方案 »
- java如何获取页面所有的内容 然后保存在本地呢?
- 绘图绘不出来,怎么回事?
- ServerSocket创建失败
- 在java中有没有类似.net中#region的代码收缩的功能
- SWT的image如何按比例缩小?
- [求助]关于File路径的问题
- 大家谈谈对Thinking in java 这本书的看法吧
- 那位高手知道如何获得ClassLoader的搜索类的路径?
- 我设计的对话框拖动时,为什么后面会带长长的尾巴?
- POI删除Excel行后,getLastRowNum方法得到还是原来的行数
- 把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是什么意思呢?