2011-01-26 7 views
5

Utilizzo Java 6 su Mac OS X 10.6. Così sono i miei utenti. Sto provando a forzare uno specifico JTextArea a non utilizzare l'anti-aliasing.Come posso forzare uno specifico JTextArea a non utilizzare l'anti-aliasing, mantenendolo attivo per il resto della mia app?

Qualche idea?

Ecco il mio codice di prova come è:

public static void main(String[] args) { 

    JTextArea jTextArea1 = new JTextArea("This is some text which should be anti-aliased"); 
    jTextArea1.setFont(new Font("Lucida Grande", Font.PLAIN, 14)); 

    JTextArea jTextArea2 = new JTextArea("Please no anti-aliasing for this text"); 
    jTextArea2.setFont(new Font("Monaco", Font.PLAIN, 10)); 

    final JFrame frame = new JFrame(); 
    frame.getContentPane().add(new JScrollPane(jTextArea1), BorderLayout.NORTH); 
    frame.getContentPane().add(new JScrollPane(jTextArea2), BorderLayout.SOUTH); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 

risposta

1

non ho la prova che, ma si può provare a eseguire l'override del metodo paintComponent del textarea:

public void drawComponent(Graphics g) 
{ 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); 
    super.drawComponent(g2d); 
} 
+0

Scusa, ho fatto un errore, questo è quello che intendevo. Certo, proviamo a disattivare l'anti-aliasing. –

+0

Stavo pensando qualcosa sulla stessa linea, ma ho provato ad impostare i suggerimenti in 'getGraphics()', 'update()', 'paint()' e 'paintComponent()' e in nessuno di questi casi è stato rispettato quel suggerimento . –

1

In Java> 5, non è necessario sovrascrivere i metodi paint. È possibile impostare una proprietà client come questo:

jTextArea2.putClientProperty(sun.swing.SwingUtilities2.AA_TEXT_PROPERTY_KEY, null); 

Nota che SwingUtilities2 è una classe di sole, quindi questo potrebbe non funzionare in altre JVM.

Problemi correlati