2010-05-10 1 views

ответ

1

Чтобы нарисовать заполненный круг с контуром в другом цвете, вы можете использовать drawOval в дополнении к fillOval (не забудьте изменить цвет на Graphics контексте перед нанесением контура).

Вы также должны изучить класс Grahpics2D, который обладает гораздо большей функциональностью, чем обычный объект Graphics. (Вы можете просто сделать экземпляр Graphics как Graphics2D).

В частности, чтобы круги выглядели «хорошо», вы можете настроить подсказку для сглаживания. Вы можете сделать это следующим образом:.

Graphics2D g2d = (Graphics2D)g; 

// Turn anti-aliasing on. 
g2d.setRenderingHint(
    RenderingHints.KEY_ANTIALIASING, 
    RenderingHints.VALUE_ANTIALIAS_ON); 

// Draw everything you want... 

// Turn anti-aliasing off again. 
g2d.setRenderingHint(
    RenderingHints.KEY_ANTIALIASING, 
    RenderingHints.VALUE_ANTIALIAS_ON); 
3

Используйте Graphics методы класса:

  • FillRect
  • fillOval

И подобные методы, чтобы сделать то, что вы пытаетесь на JPanel.

Пример:

public class Eyes extends JPanel 
{ 
    // override paint 
    @Override 
    protected void paintComponent(Graphics g) 
    { 
     super(g); 
     // use fillRect, fillOval and color methods 
     // on "g" to draw what you want 
    } 
} 

Тогда, конечно, вы будете поместить глаз объект внутри JInternalFrame, другие JPanel или контейнер, как вам нужно.

+0

+1 Кроме того, "программы Качели должны переопределить' paintComponent() 'вместо перекрывая краски()." http://java.sun.com/products/jfc/tsc/articles/painting/index.html – trashgod

+0

@trashgod: спасибо. изменил образец кода, чтобы отразить то, что вы предложили. –

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