tipos sirve que propiedades para funciones botones java swing jbutton

sirve - propiedades jbutton java



Desactivar JButton focus border (5)

Tengo un problema con JButton en Java. Básicamente, quiero desactivar el borde del botón (el botón se agrega a JDesktopPane).

Aquí está mi código:

JButton j = new JButton("BUTTON"); j.setIcon(icon1); //icon1 : icon// j.setFocusable(true); j.setContentAreaFilled(false); j.setBounds(90, 20, 130, 30); dtp.add(j); //dtp : JDesktopPane//

Podría dejar que el borde desaparezca como en esta imagen:

Pero cuando se hace clic (no se mueve) en el botón, hay un borde "punto" alrededor del botón, como este:

Entonces, ¿cómo podría configurar el botón para que cuando no mueva el mouse alrededor del área del botón, todavía esté configurado como la primera imagen, pero cuando muevo el mouse, hay un cuadrado alrededor del botón (con una luz fondo azul)?


Después de excavar, he encontrado una mejor solución. Este es también un error común de UI en aplicaciones GTK en Windows, uno de ellos es GIMP. Me molesta mucho, así que quería encontrar un arreglo global mejor que fijarlo manualmente en cada control.

La solución establece el color para el enfoque en todos los controles comunes que se supone que no debe ocurrir a transparente. Fui y probé ampliamente con Windows Forms en Visual Studio. Los botones de la barra de herramientas y ToggleButtons nunca deben tener el borde punteado incluso cuando están enfocados. Se supone que las barras de herramientas son setFocusable (falso); por defecto, ya que están en Windows. Todos los otros controles deben tener el borde punteado como en Swing, pero solo cuando se realiza un ciclo de enfoque.

// Removes the dotted border around controls which is not consistent with Windows UIManager.put("Button.focus", new ColorUIResource(new Color(0, 0, 0, 0))); UIManager.put("ToggleButton.focus", new ColorUIResource(new Color(0, 0, 0, 0))); // ways to remove it from other controls... UIManager.put("CheckBox.focus", new ColorUIResource(new Color(0, 0, 0, 0))); UIManager.put("TabbedPane.focus", new ColorUIResource(new Color(0, 0, 0, 0))); UIManager.put("RadioButton.focus", new ColorUIResource(new Color(0, 0, 0, 0))); UIManager.put("Slider.focus", new ColorUIResource(new Color(0, 0, 0, 0))); // figure out combobox UIManager.put("ComboBox.focus", new ColorUIResource(new Color(0, 0, 0, 0)));


Eso no es frontera. Es foco. Puedes eliminarlo usando:

jButton1.setFocusPainted(false);


Este puede ser un hilo antiguo, pero resolví el mío con button.setFocusable(false)

Espero que ayude para aquellos que aún están buscando alguna respuesta. aclamaciones.


No creo que hacer esto con JButton habitual sea una buena idea. Si nada, no se mostrará similar en diferentes plataformas (Mac y Linux) en caso de que planee mostrar este botón en diferentes plataformas. Para todos los fines prácticos button.setFocusPainted(false); debe encargarse de su requerimiento actual.

Considere usar un JLabel extendido con un comportamiento tipo botón (con oyentes de acción) para evitar diferencias de comportamiento.


mira si esto te puede ayudar Eliminar el borde

o tal vez esto

Border emptyBorder = BorderFactory.createEmptyBorder(); yourButton.setBorder(emptyBorder);