2017-02-02 3 views
-2

Я хочу, чтобы создать красный JButton:Установить цвет для JButton без регулировки границы

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); 
      } 
     }); 
    } 
} 

Есть ли способ, чтобы сделать красную кнопку без использования

setBorderPainted(false); 

Когда он не используется, границы но не сама кнопка, однако я не хочу использовать эту строку, потому что она удаляет мягкие края кнопки. Есть ли другой способ покрасить кнопку?

+0

Альтернативное решение: Вы можете нарисовать свою границу с выбранным цветом, как это: button2.setBorder (BorderFactory.createLineBorder (Color.black)); –

+0

В другом сообщении уже дан ответ, что это вопрос LAF. Эта информация не упоминалась в этом вопросе. Если вы используете Mac и знаете решение, проверьте другую публикацию. Содержите всю информацию о проблеме вместе в одном сообщении, чтобы все знали, что уже обсуждалось и предлагалось. – camickr

ответ

0

Пробуйте использовать button2.setContentAreaFilled(false);. Это позволит сохранить края, но устанавливает цвет фона. Согласно docs:

Если значение true, кнопка будет рисовать область содержимого. Например, если вы хотите использовать прозрачную кнопку , например, кнопку только значка, то вы должны установить в значение false. Не вызывайте setOpaque (false). Значение по умолчанию для свойства contentAreaFilled истинно.

+0

Извините, это не работает. Если вы попытаетесь вставить эту строку в мой пример выше, вы увидите, что кнопка справа (одна с этой строкой кода) превращается в красную квадратную кнопку, а не на красную кнопку с мягкими краями. – Playdowin

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