elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Mas logica que java - dos botones JToggleButton
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mas logica que java - dos botones JToggleButton  (Leído 1,781 veces)
Juanfernandez0032

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Mas logica que java - dos botones JToggleButton
« en: 20 Octubre 2016, 23:53 pm »

Hola a todos, antes que nada aclaro que el ejercicio muy basico que tengo que hacer
se podria hacer tranquilamente con un checkbox jcombobox y otros componentes...
Pero pasa mas que nada por entender la logica en este caso usando JToggledButton.

Tengo que tener dentro de un JPanel 2 JToggleButton.
Cada vez que se pulsa uno los otros tiene que quedar en isSelected(false)
Bien, ahora si uno que esta pulsado, se vuelve a pulsar TODOS tienen que quedar
en isSelected(false).
Como si fuesen palancas, la logica tiene que funcionar para 2 botones o para cien.

El codigo es este pero pero si presiono TRES veces el mismo boton cualquiera sea, la tercera no queda presionado.
A alguien se le ocurre algo u otro diseño...


parece mucho codigo pero es muy basico ;)

Código:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class PruebaPalancas extends JPanel{

public static void main(String [] args){

JFrame miVentana = new JFrame();

Palancas misPalancas = new Palancas();

miVentana.add(misPalancas);
miVentana.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
miVentana.setLocationRelativeTo(null);
miVentana.pack();
miVentana.setVisible(true);

}

}

class Palancas  extends JPanel{

int contador = 0; // verifica si es la primera vez que se entra al bucle
boolean bSelect = false; //verifica si el boton fue presionado o no.

JToggleButton palanca1 = new JToggleButton("palanca1");
JToggleButton palanca2 = new JToggleButton("palanca2");

JToggleButton ultimo = new JToggleButton();

public Palancas(){

JPanel pruebaPanel = new JPanel();
pruebaPanel.setLayout(new GridLayout(7,1,5,5));
JTBEvento jtbEvento = new JTBEvento();

palanca1.addActionListener(jtbEvento);
palanca2.addActionListener(jtbEvento);

pruebaPanel.add(palanca1);
pruebaPanel.add(palanca2);



this.add(pruebaPanel);

}

class JTBEvento implements ActionListener{

public void actionPerformed(ActionEvent e){

System.out.println(contador + " " + bSelect); //

if(contador == 0){ //significa que todos los botones NO estaban presionados y hay chequear cual esta ahora

bSelect = palanca1.isSelected();
if(palanca1.isSelected()){

System.out.println("Palanca1" + " " + bSelect);
contador++;
ultimo = palanca1;

}

bSelect = palanca2.isSelected();
if(palanca2.isSelected()){

System.out.println("Palanca2" + " " + bSelect);
contador++;
ultimo = palanca2;

}

}else{

ultimo.setSelected(false);

// System.out.println(((JToggleButton) e.getSource()).getName() + " objeto");

bSelect = palanca1.isSelected();
if(palanca1.isSelected()){

System.out.println("Palanca1" + " " + bSelect);
contador++;
ultimo = palanca1;

}

bSelect = palanca2.isSelected();
if(palanca2.isSelected()){

System.out.println("Palanca2" + " " + bSelect);
contador++;
ultimo = palanca2;

}

} //cierre de listener


}

}
}




En línea

Juanfernandez0032

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Re: Mas logica que java - dos botones JToggleButton
« Respuesta #1 en: 22 Octubre 2016, 23:14 pm »

Hola Pequeño Rafa, te paso una posible solucion, la veo poco elegante
codigo un poco engorroso, abuso de if (en el caso de que hayan muchos botones), pero funciona.
Lo ideal seria hacer algo recursivo con menos lineas pero por ahora es lo que hay.
Lo bueno que te sirve con cualquier componente que tenga dos estados.
Slds!!



Código:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class PruebaPalancas extends JPanel{

public static void main(String [] args){

JFrame miVentana = new JFrame();

Palancas misPalancas = new Palancas();

miVentana.add(misPalancas);
miVentana.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
miVentana.setLocationRelativeTo(null);
miVentana.pack();
miVentana.setVisible(true);

}

}

class Palancas  extends JPanel{

JToggleButton palanca1 = new JToggleButton("palanca1");
JToggleButton palanca2 = new JToggleButton("palanca2");

JToggleButton ultimoBoton;

public Palancas(){

JPanel pruebaPanel = new JPanel();
pruebaPanel.setLayout(new GridLayout(7,1,5,5));
JTBEvento jtbEvento = new JTBEvento(); // JTB = JToggleButton

palanca1.addActionListener(jtbEvento);
palanca2.addActionListener(jtbEvento);

pruebaPanel.add(palanca1);
pruebaPanel.add(palanca2);

this.add(pruebaPanel);

}

class JTBEvento implements ActionListener{

public void actionPerformed(ActionEvent e){

int botonesPulsados  = 0;

if(palanca1.isSelected()){botonesPulsados++;}
if(palanca2.isSelected()){botonesPulsados++;}

if(botonesPulsados == 0){ultimoBoton = null;}

if(botonesPulsados == 2){

if(palanca1.isSelected()){
if(palanca1 == ultimoBoton){
System.out.println("Ultimo boton presionado: Palanca1 ");
palanca1.setSelected(false);
botonesPulsados = 1;
}
}

if(palanca2.isSelected()){
if(palanca2 == ultimoBoton){
System.out.println("Ultimo boton presionado: Palanca2");
palanca2.setSelected(false);
botonesPulsados = 1;
}
}
}

if(botonesPulsados == 1){

if(palanca1.isSelected()){
System.out.println("Palanca1 Presionada");
ultimoBoton = palanca1;
}

if(palanca2.isSelected()){
System.out.println("Palanca2 Presionada");;
ultimoBoton = palanca2;
}
}

} //cierre del actionPerformed

} // cierre del actionListener
}




En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Aspectos de botones y ventanas java
Java
AsTeroine 7 13,783 Último mensaje 12 Agosto 2009, 01:08 am
por 1mpuls0
Logica en programacion Java Script
Programación General
ivesorm 1 3,840 Último mensaje 16 Febrero 2011, 14:35 pm
por Ferno
botones en java
Java
Grey_Area 2 3,088 Último mensaje 29 Noviembre 2011, 23:09 pm
por Grey_Area
Botones JAVA
Java
jemiesro 2 2,617 Último mensaje 14 Junio 2013, 11:23 am
por Slider324
Botones redondos java. AYUDA!
Java
MC.cover 3 3,977 Último mensaje 19 Enero 2016, 22:25 pm
por 0xFer
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines