关于 swing 中组件的显示问题

firesi 发布于 2015/11/25 01:02
阅读 266
收藏 0

最近闲得蛋疼,就打算利用 swing 写个游戏打发下时间,结果一上来就傻逼了。
以下是我的代码:

class TestComponent2 extends JComponent  {
	@Override
	public void paintComponents(Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.BLACK);
		g.drawString(" show me ", 20, 100);
	}
}

public class Test {

	public static void main(String[] args) {
		JFrame frame = new JFrame("show");
		
		TestComponent2 tc = new TestComponent2();
		frame.add(tc);
		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(400, 300); 
    	       frame.setVisible(true);
	}

}

运行后发现,JComponent  中的内容无法显示,也就是" show me "字符串没有出现在窗口中。
于是我在 paintComponents 方法中加了一条打印语句 System.out.println("++++++++++++++");
发现 paintComponents 方法没有被调用。
那么我的代码中的什么问题造成了这种情况呢?

我的运行环境:
     java version "1.7.0_51"
     Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
     Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
IDE: Eclipse 4.3
OS: windows 8.1

加载中
0
firesi
firesi

好吧,自己在Stack Overflow 上找到了答案
应该覆写 paintComponent 而不是 paintComponents

firesi
firesi
回复 @王一安 : swing 在绘制的时候调用的是paintComponent 而不会调用 paintComponents 根据 stack overflow 上某人的说法 paintComponents 似乎永远不会被调用
王一安
两者有什么区别呢??
返回顶部
顶部