L'ajout des Événements d'Action de JButtons
Hier, j'ai eu un problème avec mon code imbriqué et avoir un trop grand nombre de classes statiques. J'ai nettoyé le code, et j'essaie maintenant d'ajouter une action auditeur à la JButtons. j'ai 5 boutons différents, c'est sur le GUI, "Profil du Marché, des Utilisateurs, des Notes, des Informations." chacune fera l'objet d'un bouton sur une interface graphique. L'utilisateur sera en mesure de cliquer sur l'un des JButtons comme "Profil" et il va ouvrir un autre GUI. "J'écris ceci dans eclipse.". "Je ne suis pas à l'aide d'un GUI builder." J'ai fait une autre interface graphique qui s'ouvre lorsque l'une de l'utilisateur clique sur les boutons :
public void actionPerformed (ActionEvent e) {
JFrame frame2 = new JFrame("Your Stocks");
frame2.setVisible(true);
frame2.setSize(600,600);
JLabel label = new JLabel("Your Personal Stocks");
JPanel panel = new JPanel();
frame2.add(panel);
panel.add(label);
}
Je n'arrive pas à comprendre comment l'ajouter à chaque JButton. Si il n'y a de toute façon quelqu'un pouvait donner une idée visuelle ou d'un lien sur comment ajouter le GUI au-dessus de tous les JButtons, ce serait grandement apprécié. Voici le code avec tous mes JButtons, et l'interface graphique ActionEvent :
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Stocks {
public static void main(String [] args) {
JFrame frame = new JFrame ("Java Stocks");
frame.setSize(700,700);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel (new GridBagLayout());
frame.add(panel);
frame.getContentPane().add(panel, BorderLayout.WEST);
GridBagConstraints c = new GridBagConstraints ();
JButton button1 = new JButton("Profile");
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(40, 40, 40, 40);
panel.add(button1, c);
button1.addActionListener(new Action());
JButton button2 = new JButton("Market");
c.gridx = 0;
c.gridy = 1;
panel.add(button2, c);
button2.addActionListener(new Action());
JButton button3 = new JButton("Users");
c.gridx = 0;
c.gridy = 2;
panel.add(button3, c);
button3.addActionListener(new Action());
JButton button4 = new JButton("Notes");
c.gridx = 0;
c.gridy = 3;
panel.add(button4, c);
button4.addActionListener(new Action());
JButton button5 = new JButton("Information");
c.gridx = 0;
c.gridy = 4;
panel.add(button5, c);
button5.addActionListener(new Action());
}
public void actionPerformed (ActionEvent e) {
JFrame frame2 = new JFrame("Your Stocks");
frame2.setVisible(true);
frame2.setSize(600,600);
JLabel label = new JLabel("Your Personal Stocks");
JPanel panel = new JPanel();
frame2.add(panel);
panel.add(label);
}
}
Voici une photo des boutons. L'utilisateur sera en mesure de cliquer sur un des boutons et il va ouvrir une nouvelle interface graphique
Vous devez vous connecter pour publier un commentaire.
Ce que j'ai compris, vous voulez ouvrir une nouvelle
JFrame
lorsque vous cliquez sur un de ces boutons. Si oui, alors faire deux changements:Première: mettre en Œuvre
ActionListener
interface dans votreStock
classeDeuxième: Passer
this
mot-clé dansaddActionListener
de la méthode pour chacun de vos boutons:Aussi, j'ai presque oublié obligatoire réponse: L'Utilisation de Plusieurs JFrames: Bonne ou Mauvaise Pratique?
EDIT:
Là vous allez, ensemble de la solution (si cela ne vous aide pas, j'abandonne):
JFrame
lorsque vous cliquez/appuyez sur l'un de ces boutons?Is there anyway I can fix the code I have now without having to redo pretty much all of it?
Il n'y a pas de temps comme le présent pour apporter des modifications. Une autre option est d'utiliser un Carte de Mise en page au lieu de créer de nouveaux JDialogs tout le temps (ne pas créer de JFrames).main
méthode. I. e. créer certains séparé non méthode statique et mettre le tout à partir de votremain
dans la méthode, et enfin appeler la méthode, par exemple:new Stocks().methodName();