Подкласс JButton не отображает кнопку до нажатия кнопки / ошибка прозрачности - PullRequest
0 голосов
/ 20 июля 2011

У меня возникла еще одна проблема с моей программой.Я создал несколько подклассов JButton, чтобы делать именно то, что мне нужно.Проблема в том, что кнопки не отображаются, пока я не щелкну там, где они должны быть, или если я наведу на них указатель мыши (когда у меня было setRolloverEnabled () в true).Первоначально они были установлены для setRolloverEnabled () в true.Но я поняла, что когда я наводила на них мышь, у нее был уродливый синий контур кнопки, который мне совсем не нравился.Так есть ли способ сделать их видимыми, не наведя на них курсор или не щелкнув по ним?

У меня есть фон на моем JFrame (я субклассировал JPanel и переопределил метод paintComponent ())позволяя JFrame сохранять свою роль контейнера).Также в Adobe Photoshop я спроектировал кнопки, и на внешнем крае у них есть некоторая прозрачность, я сохранил файлы как .png, чтобы прозрачность сохранялась, но когда кнопки помещаются в рамку, все еще появляется уродливый синий контургде это должно быть прозрачным.Любая помощь в этом.

Любые предложения будут оценены.Ниже приведен код одного из моих классов Button.

public class Button extends javax.swing.JButton {  
//This Button class is not the AWT Button object. 
//It is a custom class designed by me.

    public Button(ImageIcon normal){

        setRolloverEnabled(false);
        setVisible(true);
        setIcon(normal);
        setSize(normal.getIconWidth(),normal.getIconHeight());

    }

    public Button(ImageIcon normal, ImageIcon rollover){

        this(normal);
        setRolloverIcon(rollover);

    }

    public Button(ImageIcon normal, ImageIcon rollover,ImageIcon selected){

        this(normal,rollover);
        setSelectedIcon(selected);

    }

}

1 Ответ

2 голосов
/ 20 июля 2011

Существует большая вероятность того, что вы не создаете свой графический интерфейс в потоке рассылки событий. Покраска качелей однопоточная по дизайну. Если вы попытаетесь нарисовать ваши компоненты (даже если вы не делаете это специально), результаты будут разными. Существуют хорошо документированные методы для правильной инструкции jvm для рисования ваших компонентов, включая SwingWorker и SwingUtilities.invokeLater(Runnable). Взгляните на этот урок , чтобы получить больше информации.

...