Округленный Swing JButton использование Java

16
задан Peter Mortensen 24 August 2015 в 19:03
поделиться

3 ответа

Вы пробовали следующее?

button.setOpaque(false);
button.setFocusPainted(false);
button.setBorderPainted(false);
button.setContentAreaFilled(false);
setBorder(BorderFactory.createEmptyBorder(0,0,0,0)); // Especially important

setBorder(null) мог бы работать, но существует ошибка, описанная в Sun, объясняя, что это дизайном, что UI устанавливает границу на компоненте, если клиент не устанавливает непустую границу, которая не реализует эти UIResource интерфейс.

, А не сам JDK, устанавливающий границу на EmptyBorder, когда пустой указатель передается в, клиенты должны установить EmptyBorder сами (очень легкое обходное решение). Тем путем там не является никакой беспорядок о том, кто делает что в коде.

12
ответ дан 30 November 2019 в 17:28
поделиться

Я рекомендовал бы переопределить краску (Графика g) метод как так:

class JImageButton extends JComponent implements MouseListener {
    private BufferedImage img = null;

    public JImageButton(BufferedImage img) {
        this.img = img;
        setMinimumSize(new Dimension(img.getWidth(), img.getHeight()));
        setOpaque(false);
        addMouseListener(this);
    }

    public void paintComponent(Graphics g) {
        g.drawImage(img, 0, 0, img.getWidth(), img.getHeight(), null);
    }

    @Override
    public void mouseClicked(MouseEvent e) {
    }

    @Override
    public void mouseEntered(MouseEvent e) {
    }

    @Override
    public void mouseExited(MouseEvent e) {
    }

    @Override
    public void mousePressed(MouseEvent e) {
    }

    @Override
    public void mouseReleased(MouseEvent e) {
    }
}
1
ответ дан 30 November 2019 в 17:28
поделиться

Непрозрачность должна иметь значение false, таким образом

button.setOpaque(false);

мог уже быть тем, что Вы хотите.

0
ответ дан 30 November 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: