2013-06-07 6 views
0

Я хочу поместить текст (должен быть отформатирован с помощью HTML, поэтому я не могу использовать drawString в PaintComponent) внутри Circle. Проблема заключается в том, что после рисования метки вызывается «paintComponent», поэтому он охватывает мой текст.Ярлык внутри Circle

Как нарисовать овал в начале, а затем нарисовать мою строку?

class Circle extends JLabel 
{ 

     public Circle(String string) {   super(string); } 
    @Override 
    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     g.setColor(Color.yellow); 
     g.fillOval(0,0, 70, 70); 
     g.setColor(Color.blue); 
     g.drawOval(0,0, 70, 70); 
    } 
} 
+0

Вы могли бы рассмотреть вопрос о создании этикетки внутри таможенной границы. См. ['TextBubbleBorder'] (http://stackoverflow.com/a/16909994/418556) для идей. –

ответ

0

Я бы попытался использовать setComponentZOrder(), чтобы установить порядок надписей выше круга.

1

Вероятно, самым быстрым решением является изменить состав paintComponent к

public void paintComponent(Graphics g) 
{ 
    g.setColor(Color.yellow); 
    g.fillOval(0,0, 70, 70); 
    g.setColor(Color.blue); 
    g.drawOval(0,0, 70, 70); 
    super.paintComponent(g); 
} 

Я бы, однако, также рассмотреть вопрос, а не наследование в данном случае. Возможно, определите другой класс компонентов, состоящий из метки и панели с кругом.

Смежные вопросы