帮忙看下一个简单的java程序

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:02:40
这个程序有两个java类文件,实现点一下按钮画一个圆。我目的是要将画图部分单独写在一个类里。下面是代码,问题是运行后并不调用paint()方法,如果将注释部分加上则可以画出圆,这两个类在Eclipse中同一个包下
package ButtonDraw;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonDraw extends JFrame implements ActionListener{
static Draw draw;
static JButton start=new JButton("start");
static ButtonDraw fr=new ButtonDraw();

public static void main(String[] args){

fr.setSize(new Dimension(200,300));
fr.setLayout(new GridLayout());
fr.add(start);
start.addActionListener(fr);
fr.add(start);
fr.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="start"){
draw=new Draw();
//draw.paint(getGraphics());
fr.add(draw);
}
}
}
//画图类
package ButtonDraw;
import java.awt.Graphics;
import javax.swing.*;
public class D

帮你改了下:
public class ButtonDraw extends JFrame implements ActionListener {
static Draw draw;
static JButton start = new JButton("start");
static ButtonDraw fr = new ButtonDraw();

public static void main(String[] args) {

fr.setSize(new Dimension(200, 300));
fr.setLayout(new GridLayout());
fr.add(start);
start.addActionListener(fr);
fr.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "start") {
draw = new Draw();
fr.add(draw);
fr.setSize(400, 400);
fr.setVisible(true);
fr.setDefaultCloseOperation(fr.EXIT_ON_CLOSE);
// draw.paint(getGraphics());
}
}

}
public class Draw extends JPanel {
Graphics g ;
Draw() {
repaint();
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(36, 36, 36, 3