为什么这里的repaint方法无效?

knightzhuwei 2009-05-09 02:13:08

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class F {
public static void main(String[] args) {
ButtonFrame frame = new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class ButtonFrame extends JFrame {
JButton b= new JButton();
FillPanel p = new FillPanel();
public ButtonFrame() {
this.setSize(200,200);
this.add(b,BorderLayout.NORTH);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//p.repaint();这句无效
ButtonFrame.this.repaint();//貌似这句也无效
}
});
}
}
class FillPanel extends JPanel {
private int i;
protected void paintComponent(Graphics g) {
//super.paintComponent(g);
System.out.println("paint");
g.drawString(i+"", 100, 100);
i++;
}
}


求问这是为什么啊
...全文
220 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
imasmallbird 2009-05-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 knightzhuwei 的帖子:]
Java code
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class F {
public static void main(String[] args) {
ButtonFrame frame = new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_C…
[/Quote]

你光加了按钮也没加this.add(p);呀
把p加上,然后把p.repain()注释去掉试一下
knightzhuwei 2009-05-09
  • 打赏
  • 举报
回复
....
我明白了 没有add。。。
是我脑残了。。悲剧...
Dreamsea_2008 2009-05-09
  • 打赏
  • 举报
回复
我只是在Jtree中用过这个函数,还挺有效的
__浮夸 2009-05-09
  • 打赏
  • 举报
回复
等待高手...

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧