Pregunta

Tengo un JButton que, por diversas razones quiero actuar como un botón, pero mirada como un JLabel. En realidad, no tiene por qué ser un JLabel bajo el capó, sólo que no quiero el borde botón elevado a aparecer.

¿Hay una manera fácil de desactivar el botón "ver" para JButtons pero mantener todas las funciones de la tecla?

Me podría construir algún tipo de compuesto que subclase hyperbutton delegado a un JLabel con fines de exhibición, pero estoy realmente esperando que hay algo en la línea de button.lookLikeAButton(false).

¿Fue útil?

Solución

Usted tendrá que hacer lo siguiente:

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

Es posible que desee excluir setFocusPainted(false) si lo desea pintar en realidad el enfoque (por ejemplo, la línea fronteriza de puntos en aspecto y la sensación de Windows).

He utilizado el código anterior en los casos en que he querido un botón de "único icono".

Otros consejos

Configurar el color de fondo transparente, y la frontera a una instancia EmptyBorder.

por ejemplo.

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

El texto todavía se moverá hacia arriba y hacia abajo a medida que haga clic en el botón y el botón todavía puede ser "armado" haciendo clic, tenencia, y "desarmado" moviendo el ratón fuera del área del botón.

Si no desea este comportamiento, entonces es probable que no desea utilizar un botón, y el uso de una etiqueta real en lugar.

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

Estas tres líneas hacen el truco.

Podría ser más fácil simplemente añadir un detector de ratón a un JLabel? Se podría ajustar los colores en mousePressed y mouseReleased, y hacer su procesamiento acción sobre mouseClicked?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top