2017-02-02 3 views
-2

Ich mag eine rote JButton erstellen:-Set Farbe auf JButton ohne Rand Anpassung

import java.awt.*; 
import javax.swing.*; 

public class RedButtonTest { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame frame = new JFrame("Red Button Color Test"); 
       JPanel pane1 = new JPanel(new FlowLayout()); 
       JPanel pane2 = new JPanel(new FlowLayout()); 
       JButton button1 = new JButton(); 
       JButton button2 = new JButton(); 

       frame.setSize(new Dimension(300, 300)); 
       button1.setPreferredSize(new Dimension(100, 100)); 
       button2.setPreferredSize(new Dimension(100, 100)); 
       button2.setBackground(Color.red); 
       button2.setBorderPainted(false); //This line 
       button2.setOpaque(true); 

       pane1.add(button1); 
       pane2.add(button2); 
       frame.add(pane1, BorderLayout.WEST); 
       frame.add(pane2, BorderLayout.EAST); 

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

Gibt es eine Möglichkeit, die Taste rot zu machen, ohne

setBorderPainted(false); 

Wenn nicht in Gebrauch, die Grenzen rot und nicht die Schaltfläche selbst, aber ich möchte diese Zeile nicht verwenden, da sie die weichen Kanten der Schaltfläche entfernt. Gibt es eine andere Möglichkeit, eine Schaltfläche zu färben?

+0

Alternative Lösung: Sie können die Grenze zu einer ausgewählten Farbe wie folgt malen: button2.setBorder (BorderFactory.createLineBorder (Color.black)); –

+0

Die Antwort wurde bereits im anderen Beitrag gegeben, dass es sich um ein LAF-Thema handelt. Diese Information wurde in dieser Frage nicht erwähnt. Wenn Sie einen Mac benutzen und eine Lösung kennen, dann schauen Sie sich den anderen Beitrag an. Halten Sie alle Informationen über das Problem in einem einzigen Beitrag zusammen, damit jeder weiß, was bereits besprochen und vorgeschlagen wurde. – camickr

Antwort

0

Versuchen Sie, button2.setContentAreaFilled(false); zu verwenden. Dadurch bleiben die Kanten erhalten, aber die Hintergrundfarbe wird festgelegt. Entsprechend der docs:

Wenn wahr, die Schaltfläche wird den Inhaltsbereich malen. Wenn Sie eine durchsichtige Schaltfläche haben möchten, z. B. eine Schaltfläche mit nur einem Symbol, dann sollten Sie auf false setzen. Rufen Sie nicht setOpaque (false) auf. Der Standardwert für die Eigenschaft contentAreaFilled ist wahr.

+0

Sorry, das funktioniert nicht. Wenn Sie versuchen, diese Zeile in meinem obigen Beispiel einzufügen, sehen Sie, dass die Schaltfläche auf der rechten Seite (die mit dieser Codezeile) zu einer roten quadratischen Schaltfläche anstatt zu einer roten Schaltfläche mit weichen Kanten wird. – Playdowin

Verwandte Themen