Domanda

Ho un JButton che per vari motivi voglio agire come un pulsante, ma sembra un JLabel. Essa in realtà non deve essere un JLabel sotto il cofano, solo che non voglio che il bordo rialzato tasto di presentarsi.

C'è un modo semplice per disattivare il pulsante "look" per JButtons ma mantenere tutte le funzionalità del tasto?

ho potuto costruire una sorta di composto sottoclasse hyperbutton che delegata ad un JLabel a scopo di visualizzazione, ma sto veramente sperando ci sia qualcosa sulla falsariga di button.lookLikeAButton(false).

È stato utile?

Soluzione

Si vorrà fare quanto segue:

        setFocusPainted(false);
        setMargin(new Insets(0, 0, 0, 0));
        setContentAreaFilled(false);
        setBorderPainted(false);
        setOpaque(false);

Si consiglia di escludere setFocusPainted(false) se si vuole dipingere in realtà la messa a fuoco (per esempio tratteggiata linea di confine su Windows look and feel).

Ho utilizzato il codice di cui sopra nei casi in cui ho voluto un pulsante "unica icona".

Altri suggerimenti

Imposta il colore di sfondo a trasparente, e il confine a un'istanza EmptyBorder.

per es.

   JButton button = new JButton();
   button.setBackground(null);
   button.setOpaque(false);
   button.setBorder(new EmptyBorder());

Il testo sarà ancora muoversi su e giù, come si clicca il pulsante e il pulsante può ancora essere "armato" con un clic, la detenzione, e "disarmato", spostando il mouse fuori dall'area del pulsante.

Se non si desidera questo comportamento, allora probabilmente non si vuole utilizzare un pulsante, e utilizzare un vero e proprio marchio, invece.

button.setBorderPainted( false );
button.setContentAreaFilled( false ); // ?
 setContentAreaFilled(false);
 setBorderPainted(false);
 setOpaque(false);

Questa tre linee fare il trucco.

Potrebbe effettivamente essere più facile solo per aggiungere un listener del mouse per un JLabel? Si potrebbe regolare i colori su mousePressed e mouseReleased, e fare la vostra elaborazione azione sul mouseClicked?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top