|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 86
|
[JAVA] un utlizzo di jRadioButton
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: Codice:
if (buttonTre.isSelected()){
SequencePanel seqpan = new SequencePanel(simulation, null);
seqpan.setComboBoxOff();
}
|
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Codice:
mioRadioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
mioRadioButtonActionPerformed(evt);
}
});
...
private void mioRadioButtonActionPerformed(ActionEvent evt) {
System.out.println("evento!");
}
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 86
|
Ti rignrazio andrea! sxcusami il ritardo nella risposta, cmq ora provo subito.
..ciao fede.. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 86
|
allora:
riscontro tali problemi: nella classe dove ho il radioButton faccio tale cosa: Codice:
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();
}
});
Codice:
public void setComponentsOffAsConventional() {
sequenceChoicesCombo.setEnabled(false); //disabilito la comboBox
}
non sono sicuro che la chiamata a p.setComponentsOffl(); stia nel posto giusto... ciao fede |
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...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... |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 86
|
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 |
|
|
|
|
|
#8 | |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
...un esempietto con gestione eventi già postato tra queste pagine : ...classe principale adibita alla gestione della logica : Codice:
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++);
}
}
Codice:
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();
}
}
Codice:
public interface CustomEventListener extends EventListener {
void customEventPerformed(CustomEvent e);
}
Codice:
public class CustomEvent extends EventObject {
public CustomEvent(Object source) {
super(source);
}
}
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:44.




















