View Full Version : [JAVA] un utlizzo di jRadioButton
federico100mt
06-10-2009, 14:15
ciao secondo voi, se in una classe ho un radio button e nell'altra ho un metodo privato che crea una finestra con altri componenti, per esempio un combo box come potrei fare per fa si che quando preme un dei 3 radiobutton si disattivi per esempio un combo dell'altra classe?
io per esempio faccio cosi:
if (buttonTre.isSelected()){
SequencePanel seqpan = new SequencePanel(simulation, null);
seqpan.setComboBoxOff();
}
in questo caso non cambia niente, ma come potrei fare per far si che accada dinamicamente? una sorta di interruttore.
:)
mioRadioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
mioRadioButtonActionPerformed(evt);
}
});
...
private void mioRadioButtonActionPerformed(ActionEvent evt) {
System.out.println("evento!");
}
...ciao Andrea...
...per la comunicazione tra classi qui (http://www.hwupgrade.it/forum/showthread.php?t=1946226) c'č qualche spunto...altrimenti puoi implementare un sistema ad eventi...
...ciao Andrea...
federico100mt
07-10-2009, 12:54
Ti rignrazio andrea! sxcusami il ritardo nella risposta, cmq ora provo subito.
..ciao fede..
federico100mt
07-10-2009, 13:22
allora:
riscontro tali problemi: nella classe dove ho il radioButton faccio tale cosa:
buttonConventional.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
mioRadioButtonActionPerformed(evt);
}
private void mioRadioButtonActionPerformed(ActionEvent evt) {
// TODO Auto-generated method stub
Panel p = new Panel(simulation, null); // ho bisogno di istanziare qualcosa perche non riesco a chiamare setComponent
p.setComponentsOffl();
}
});
il metodo setComponent é in un'altra classe ed é cosi:
public void setComponentsOffAsConventional() {
sequenceChoicesCombo.setEnabled(false); //disabilito la comboBox
}
perche quando premo non cambia nulla?
non sono sicuro che la chiamata a p.setComponentsOffl(); stia nel posto giusto...
ciao fede
...infatti l'idea dovrebbe essere quella di avere una main class che riceve gli eventi da tutte le classi che gestiscono l'interfaccia...il secondo link serve proprio a questo...in questo modo la logica verrā gestita nella classe principale e non sarā sparsa nelle varie classi swing delle finestre...
...ciao Andrea...
federico100mt
07-10-2009, 15:14
ok, ma non cambia nulla, quando preme il radiobutton il combobos rimane attivo. C'e un modo per cambiare lo stato dei componenti dinamicamente?
fede
ok, ma non cambia nulla, quando preme il radiobutton il combobos rimane attivo. C'e un modo per cambiare lo stato dei componenti dinamicamente?
fede
...le strade sono molteplici...io consiglio di separare le varie classi layout dalla classe contenente la logica...
...un esempietto con gestione eventi giā postato tra queste pagine :
...classe principale adibita alla gestione della logica :
public class GestoreLogica implements CustomEventListener{
RadioLayout layout1;
RadioLayout layout2;
int counter = 0;
public static void main(String args[]){
new GestoreLogica();
}
public GestoreLogica(){
layout1 = new RadioLayout();
layout1.addCustomEventListener(this);
layout1.setVisible(true);
layout2 = new RadioLayout();
layout2.addCustomEventListener(this);
layout2.setVisible(true);
}
public void customEventPerformed(CustomEvent e) {
this.layout1.setTitle("click "+counter++);
this.layout2.setTitle("click "+counter++);
}
}
...layout :
public class RadioLayout extends JFrame{
private CustomEventListener listener;
private JRadioButton radio;
public RadioLayout(){
this.setSize(200,100);
this.setLayout(new FlowLayout());
radio = new JRadioButton();
this.add(radio);
this.add(new JLabel("uno"));
radio.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
radioButtonActionPerformed(evt);
}
});
}
public void addCustomEventListener(CustomEventListener listener) {
this.listener = listener;
}
private void launchEvent() {
this.listener.customEventPerformed(new CustomEvent(this.getName()));
}
private void radioButtonActionPerformed(ActionEvent evt){
launchEvent();
}
}
...interfaccia evento :
public interface CustomEventListener extends EventListener {
void customEventPerformed(CustomEvent e);
}
...oggetto evento :
public class CustomEvent extends EventObject {
public CustomEvent(Object source) {
super(source);
}
}
...ciao Andrea...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.