2011-11-08 40 views
2

我在一个很奇怪的问题,我有一个自定义的JPanel,我想画一个圆圈,但没有任何反应......这是我的源码,希望有人看到这个错误,我找不到它。Java Swing,看不到错误

import javax.swing.JPanel; 

public class CircleView extends JPanel { 

public CircleView() {} 

@Override 
    public void paintComponent(Graphics g) { 
    g.setColor(Color.red); 
    g.drawOval(10, 10, 50, 50); 
    } 
} 
+0

如何测试'CircleView'? –

+0

我将它添加到layeredPane。我能够添加图像,但只要我添加CircleView,没有任何反应 – markus

回答

3

,在所有

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError 
     at KondorExport.Util.Helping.CustomComponent12.<init>(CustomComponent12.java:19) 
     at KondorExport.Util.Helping.CustomComponent12$1.run(CustomComponent12.java:37) 
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
Caused by: java.lang.RuntimeException: Uncompilable source code - class CircleView is public, should be declared in a file named CircleView.java 
     at KondorExport.Util.Helping.CircleView.<clinit>(CustomComponent12.java:44) 
     ... 10 more 

1不是真的)去除构造

2)添加super.paintComponent(g);

这一个可以运行

class CircleView extends JPanel { 

    private static final long serialVersionUID = 1L; 

    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(100, 100); 
    } 

    @Override 
    public void paintComponent(Graphics g) { 
     int margin = 10; 
     Dimension dim = getSize(); 
     super.paintComponent(g); 
     g.setColor(Color.red); 
     g.drawOval(margin, margin, dim.width - margin * 2, dim.height - margin * 2); 
    } 
} 
+0

我读了一些howtos,我认为,我写的是足够的,将尝试^^ – markus

+1

看起来好像,类工作正常。将它添加到layeredPane是个问题... – markus

3

这'S B因为你的组件没有尺寸,所以为什么@mKorbel提供的sscce在定义组件的首选尺寸时使用了一些“魔术”尺寸。