Ensemble JLabel Visible lorsque JButton est cliqué dans actionPerformed
Je suis en train d'essayer d'obtenir un JLabel apparaissent lorsqu'un JButton est cliqué. J'ai ajouté une action de l'auditeur et de l'ajout de la composante de la mise en page. Je suis l'aide de la label1.setVisible(true) lorsque le JButton est cliqué dans actionPerformed. J'ai toujours pas de travail. Certains peuvent regarder mon code?
public class LearnAppMain extends JFrame implements ActionListener {
//Define variables
public JButton button1;
public JLabel label1;
public JTextField field1;
private Image image1;
private String apple = "apple.jpg";
public LearnAppMain() {
ImageIcon image1 = new ImageIcon(this.getClass().getResource(apple));
JLabel label1 = new JLabel(image1);
button1 = new JButton("A");
button1.addActionListener(this);
field1 = new JTextField(10);
//Create layout
setLayout(new FlowLayout());
//create Container
final Container cn = getContentPane();
cn.add(button1);
cn.add(field1);
cn.add(label1);
//setLayout(new FlowLayout());
setSize(250, 250);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (e.getSource() == button1) {
label1.setVisible(true);
field1.setText("Apple");
}
}
}
J'ai ma méthode principale dans un autre fichier de classe. L'erreur que je reçois me mène à la label1.setVisible(true);
Toutes les questions que j'ai vu, disent-ils à faire cela, mais je me demandais si il y a autre chose qui doit être ajouté.
OriginalL'auteur Keith Kaplan | 2012-02-21
Vous devez vous connecter pour publier un commentaire.
Il y avait un couple de questions se posent ici:
label1
était caché en faisantJLabel label
dans le constructeur. En gros, vous avez déclaré une variable appeléelabel1
dans votre constructeur qui se cachaient l'un dans la classe elle-même.label.setVisible(false)
pour le test, mais vous pourriez autrementJ'ai mis aussi la création de
Image
de côté car je n'ai pas eu une image, et décommenter et le changement comme approprié.Voici un travail complet version:
Je vous suggère d'utiliser d'autres (généralement intérieur de la classe)
ActionListener
les instances au lieu de l'annulation de laactionPerformed
. Voir, par exemple, pour un exemple similaire si vous êtes intéressés:Aussi, si vous utilisez ce dans une plus grande demande (c'est à dire pas juste à expérimenter ou à des fins de prototypage), assurez-vous que tous les Swing code est exécuté sur EDT.
Vous utilisez généralement SwingUtilities.invokeLater à cette fin.
Espère que cette aide.
Une chose est sûre, heureux il a!
si icyrock du poste vous aide, voter en cliquant sur la flèche à côté de la question (comme je l'ai déjà fait). Si cela résout votre problème, sélectionnez la réponse en cliquant sur la case à cocher à la gauche de celui-ci.
Un utilisateur peut-il avec rep. de 11-vote?
oui peut le faire, en question, y compris des commentaires,
OriginalL'auteur icyrock.com
d'abord, vous n'ajoutez pas l'image d'abord lui-même à JLabel.
il suffit de créer l'objet et de le laisser comme..
puis faire la modification dans l'action effectuée
public void actionPerformed(ActionEvent e) {
il va certainement œuvres
OriginalL'auteur padman
OriginalL'auteur Temidayo Adebanjo