
Mas logica que java - dos botones JToggledButton
Publicado por Juan (6 intervenciones) el 20/10/2016 22:47:32
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 JPannel 2 JToggledButton.
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 ;)
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 JPannel 2 JToggledButton.
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 ;)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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(); // JTB JToggleButton :)
palanca1.addActionListener(jtbEvento);
palanca2.addActionListener(jtbEvento);
pruebaPanel.add(palanca1);
pruebaPanel.add(palanca2);
this.add(pruebaPanel,BorderLayout.CENTER);
}
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
}
}
}
Valora esta pregunta


0