2013-06-08 17 views

risposta

21

Sì, bisogna farlo in Graphics2D, ma non è certo un problema, come ogni grafica in Swing è un oggetto Graphics2D (solo mantiene la vecchia interfaccia per motivi di compatibilità).

public void paintComponent(Graphics g) { 

    super.paintComponent(g); 
    Graphics2D g2 = (Graphics2D) g; 
    g2.setStroke(new BasicStroke(3)); 
    g2.drawLine(...); //thick 
    ... 

} 

Come si può vedere, la g2.setStroke (...) consente di modificare la corsa, e c'è anche un BasicStroke che prevede easy line larghezza di selezione.

+0

L'ho fatto senza usare super.paintCompontent (g); – user2465406

+1

i rischi di non fare la super chiamata includono non avere il componente sottoclassato fare la corretta gestione dello sfondo, compresa la possibile configurazione di colori, icone, trasparenze, ecc. Sì, funziona, ma le probabilità sono che non funzioni in molti scenari che non hai ancora testato. –

+1

@EdwinBuck devo avere il metodo 'paintComponent()' o posso farlo nel metodo 'paint()'? Gli argomenti sono gli stessi. C'è qualche tipo di rischio? – Ungeheuer