2016-10-19 1 views
1

J'ai donc fini de travailler sur une interface pour mon programme, mais maintenant je dois vraiment faire fonctionner mon programme. J'utilise Java depuis un moment maintenant, mais certaines choses (comme celle-ci) sont encore très nouvelles pour moiVérifiez à la fois JCheckBox et JButton en Java

J'ai beaucoup cherché, ici, sur d'autres sites, et sur le site Web d'Oracle. Mais le plus proche que je pouvais trouver à ce dont j'avais besoin, était cette question exacte, uniquement pour JavaScript.

Ce que j'ai est un bouton, et 17 cases à cocher. Ce que je dois faire (pour chaque case à cocher), est de vérifier si la case à cocher est cochée, et si c'est le cas, vérifiez également si le bouton est cliqué (ce n'est pas un bouton à bascule btw). Et puis exécutez un code. Maintenant, pour le code ayant aussi peu de lignes que possible, j'espérais faire quelque chose comme faire l'appel du code principal sur un autre fichier .class, qui serait le code qui s'exécute si le bouton et la case retournent vrai. Au lieu de coller le code pour chaque case booléenne.

Donc il suffit de mettre, c'est ce que je dois:

If (JCheckBox is checked) { 
    If (JButton is pressed) { 
     Call other .class file 
    } 
} 

else { 

} 

Maintenant, ceci devrait se passer sous chaque case à cocher, et je aurais besoin de vérifier le bouton à chaque fois. Donc alternativement, je pourrais simplement mettre tout le code pour les booléens, sous le code de JButton, et économiser beaucoup de lignes. Mais je ne sais pas s'il est possible de vérifier un objet, dans le bloc de code d'un autre objet.

Voici un extrait du code pour le bouton et l'une des cases à cocher.

//"Clean" button 
JButton btnClean = new JButton("Clean"); 
    btnClean.setBounds(244, 149, 100, 50); 
    btnClean.setFont(new Font("Arial", Font.PLAIN, 20));    
    panel_Clean.setLayout(null); 
    panel_Clean.add(btnClean); 

//Checkbox "Temporary Files" (Registry) 
JCheckBox chckbxTemporaryFilesRegistry = new JCheckBox("Temporary Files"); 
chckbxTemporaryFilesRegistry.setBounds(12, 80, 162, 15); 
panel_Destination.add(chckbxTemporaryFilesRegistry); 

donc du pseudo-code ci-dessus cet extrait, vous pouvez voir que je veux mettre un ensemble de « si » déclarations, que ce soit dans la case à cocher, ou le bloc de code du bouton. Selon ce qui serait le plus efficace, puis appelez un autre fichier de classe qui se trouve dans le même dossier que le fichier de classe principal (celui qui crée l'interface).

Répondre

1

Vous pouvez utiliser un ActionListener. Cet écouteur exécute du code lorsque le bouton est activé. Tout d'abord assurez-vous de mettre en œuvre le ActionListener

implements ActionListener 

ajoutez ensuite sur le bouton d'action à l'écoute.

btnClean.addActionListener(this); 

Maintenant, vous pouvez modifier votre méthode ActionPerfomed

public void actionPerformed (ActionEvent ae){ 
    if(chckbxTemporaryFilesRegistry.isSelected()){ 
     //dosomething 
    } 

} 

J'espère que vous résout le problème. Bonne journée.

+0

Votre réponse a beaucoup aidé, mais je ne suis pas sûr que là où je mettrais le – Denisowator

+0

Vous pourriez ajouter des outils ActionListener à votre déclaration de classe :) – Timo

+0

Désolé, accidentellement appuyez sur Entrée. ... "implémente ActionListener" et la méthode au bas de votre réponse. Je ne l'ai pas mentionné, mais mon code a beaucoup de méthodes au sommet, et soit je ne sais pas si je mets celui-ci au bon endroit, ou je pense que je le suis, mais ça me donne erreurs que je ne comprends pas. – Denisowator

0

Vous pouvez utiliser chckbx.isSelected() pour la case à cocher, mais pour le bouton, vous devez utiliser un EventListener comme un ActionListener ou un MouseListener