Mon programme est destiné à afficher 4 boutons avec un numéro, puis selon le bouton pressé l'écran suivant montrera un nombre différent de JTextFields, mais quand l'un des boutons sont pressés le panneau suivant est vide? Toute aide et suggestions sont grandement appréciées merci.créer une quantité différente de JTextFields selon le bouton qui a été pressé
public class TestGui {
static int playersSelected = 0;
public static void main(String[] args) {
JFrame gameWindow = new JFrame("Trivial Pursuit");
gameWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameWindow.setSize(800, 650);
gameWindow.setVisible(true);
JPanel mainMenu = new JPanel();
//create layout for main menu
mainMenu.setLayout(new FlowLayout(FlowLayout.CENTER));
//add the contents of the main menu panel to the application window
gameWindow.add(mainMenu);
JButton[] playerButton = new JButton[4];
for (int i = 0; i < playerButton.length; i++) {
final int FinalI = i;
playerButton[i] = new JButton("Button " + i);
mainMenu.add(playerButton[i]);
playerButton[i].setOpaque(true);
playerButton[i].setPreferredSize(new Dimension(271, 123));
playerButton[i].setContentAreaFilled(true);
playerButton[i].setBorder(BorderFactory.createEmptyBorder());
playerButton[i].addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseEntered(java.awt.event.MouseEvent evt) {
playerButton[FinalI].setBorder(BorderFactory.createLoweredBevelBorder());
}
@Override
public void mouseExited(java.awt.event.MouseEvent evt) {
playerButton[FinalI].setBorder(BorderFactory.createEmptyBorder());
}
});
}
JLabel[] playerNumberText = new JLabel[5];
JTextField[] createPlayers = new JTextField[5];
JPanel createPlayersPanel = new JPanel();
createPlayersPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
createPlayersPanel.setVisible(true);
for (int i = 1; i <= playersSelected; i++) {
final int finalI = i;
createPlayers[i] = new JTextField("Player " + i + " input name here");
createPlayers[i].setPreferredSize(new Dimension(160, 20));
playerNumberText[i] = new JLabel();
playerNumberText[i].setText("Player " + i);
playerNumberText[i].setPreferredSize(new Dimension(350, 100));
playerNumberText[i].setHorizontalAlignment(SwingConstants.CENTER);
createPlayersPanel.add(playerNumberText[i]);
createPlayers[i].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (createPlayers[finalI].getText().equals("Player " + finalI + " input name here")) {
createPlayers[finalI].setText("");
}
}
});
}
for (int i = 0; i < playerButton.length; i++) {
final int finalI = i;
playerButton[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
gameWindow.remove(mainMenu);
gameWindow.add(createPlayersPanel);
switch (finalI) {
case 0:
playersSelected = 2;
break;
case 1:
playersSelected = 3;
break;
case 2:
playersSelected = 4;
break;
case 3:
break;
}
gameWindow.revalidate();
gameWindow.repaint();
System.out.println(playersSelected);
}
});
}
}
}
Cela pourrait vous être utile: https://sourceforge.net/p/tus/code/HEAD/tree/tjacobs/ui/dialogs/ ParamDialog.java – ControlAltDel
Il est très difficile de voir ce que vous essayez d'accomplir. Pouvez-vous poster un exemple minimal? – ControlAltDel
@ControlAltDel étonnamment c'est un minimum, je suis très nouveau à la programmation, donc je suis désolé à quel point mon code est confus. –