Мне нужно сделать игру для школьного проекта в CS. Я хочу сделать так, чтобы человек мог ввести свое имя, и все последующие панели будут иметь на нем свое имя. Я использую макет карты, который работает по большей части. Когда я запускаю игру и вводю имя, она работает именно на этой карте. Однако, когда я перехожу на следующую карту, где должно появиться имя String, оно выглядит как null. Мое подозрение в том, что программа создает все карты, прежде чем дается возможность принять ввод имени и, следовательно, не работает. Мой учитель тоже не знает, как это сделать.Сделать замену JPanel после ActionListener
Вот сегмент кода:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class NovelCards extends JFrame {
private String name;
private CardLayout cards;
private JTextField txt = new JTextField(10);
private JLabel label = new JLabel();
public NovelCards() {
super("Novel");
masterPanel = new JPanel();
cards = new CardLayout();
txt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
name = txt.getText();
label.setText(name);
}
});
button2 = new JButton("Next");
button2.addActionListener(new NextListener());
JPanel card2 = new JPanel();
card2.add(button2);
card2.add(txt);
card2.add(label);
card2.add(new JLabel(" Enter your name "));
JButton button3 = new JButton("Next");
button3.addActionListener(new NextListener());
JPanel card3 = new JPanel();
card3.add(new JLabel("Hello there, " + name + "!"));
card3.add(button3);
masterPanel.setLayout(cards);
masterPanel.add("2",card2);
masterPanel.add("3",card3);
this.setContentPane(masterPanel);
cards.show(masterPanel, "1");
}
public class NextListener implements ActionListener{
public void actionPerformed(ActionEvent event){
cards.next(masterPanel);
}
Здесь также несколько фотографий программы при запуске.
Здесь имя входа экран после выбора имени и удара входят:
И тогда вот последующая карта:
Заранее спасибо за помощь ! (Я бы сразу разместил изображения, но у меня недостаточно репутации)
Спасибо за понимание! Я очень новичок в коде, поэтому, если бы вы могли направить меня к тому, что мне нужно, чтобы научиться передавать имя на другую панель? – BananaCreamDream