J'écris un programme en Java où j'utilise JTabbedPane. Chaque onglet est associé à un panneau différent avec des étiquettes, des champs de texte et un bouton. J'ai utilisé GridBagLayout dans les panneaux. J'ai ajouté un actionlistener au bouton, mais quand je clique dessus, rien ne se passe. EDIT: J'ai également d'autres boutons en dehors du JTabbedPane qui fonctionne parfaitement bien.Rien ne se passe quand on clique sur le bouton
Je vois que rien ne se passe parce que je fais:
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
System.out.println("blablabla");
}
et rien est imprimé.
Existe-t-il des problèmes courants lors de l'utilisation des boutons et de GridBagLayout/JTabbedPane?
EDIT avec SSCCE
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class Hjelp extends JFrame {
private FlowLayout layout;
private JButton button1;
private JButton button2;
private JPanel menu, frontpage;
private JPanel present, previous, something;
public Hjelp() {
layout = new FlowLayout(FlowLayout.CENTER, 10, 20);
setLayout(layout);
setSize(900, 900);
setLocationRelativeTo(null);
setVisible(true);
setPanels();
something = something();
add(something, BorderLayout.CENTER);
something.setVisible(false);
button1 = new JButton("CLICK ME");
add(button1);
buttonListener();
}
private void buttonListener() {
Buttonlistener listener = new Buttonlistener();
button1.addActionListener(listener);
button2.addActionListener(listener);
}
private void setPanels() {
menu = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 0));
frontpage = new JPanel();
previous = frontpage;
present = frontpage;
add(menu);
}
public void visiblePanel() {
previous.setVisible(false);
present.setVisible(true);
}
private JPanel something() {
visiblePanel();
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1, 1));
JTabbedPane tabbedPane = new JTabbedPane();
JComponent panel1 = tab();
tabbedPane.addTab("Click me", panel1);
tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
panel.add(tabbedPane);
return panel;
}
private JComponent tab() {
JPanel panel = new JPanel(false);
panel.setPreferredSize(new Dimension(870, 300));
panel.setLayout(new GridBagLayout());
GridBagConstraints cs = new GridBagConstraints();
cs.fill = GridBagConstraints.HORIZONTAL;
button2 = new JButton("Click me");
cs.gridx = 1;
cs.gridy = 6;
cs.gridwidth = 1;
panel.add(button2, cs);
return panel;
}
private class Buttonlistener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button1) {
present = something;
button1.setVisible(false);
something();
previous = something;
}
else if (e.getSource() == button2) {
System.out.println("Blablabla");
}
}
}
public static void main(String [] args) {
final Hjelp vindu = new Hjelp();
vindu.addWindowListener(
new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
SOLVED
Problèmes avec les boutons ou la mise en page ou tabbe d volet? Non, ils font partie de Java depuis la version 1.0/1.1 en 1999. C'est vous et votre code. Vous n'avez probablement pas ajouté la classe Listener au bouton. – duffymo
Pour une meilleure aide plus tôt, postez un [SSCCE] (http://sscce.org/). –
@Vulcan Quel est le problème avec '=='? Ceci est une comparaison d'identité. –