Java Swing, не вижу ошибки - PullRequest
       43

Java Swing, не вижу ошибки

2 голосов
/ 08 ноября 2011

У меня очень странная проблема, у меня настроенная JPanel, которую я хочу нарисовать кругом, но ничего не происходит ... вот мой источник, надеюсь, кто-то увидит ошибку, я не могу ее найти.1001 *

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);
    }
}

Ответы [ 2 ]

3 голосов
/ 08 ноября 2011

Это потому, что ваш компонент не имеет размеров, поэтому sscce, предоставляемая @ mKorbel , использует некоторые "магические" измерения при определении предпочтительного размера компонента.

3 голосов
/ 08 ноября 2011

это совсем не так

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);
    }
}
...