Мне нужно сделать игру для школьного проекта в CS. Я хочу сделать так, чтобы человек мог ввести свое имя, и все последующие панели будут иметь свое имя. Я использую макет карты, который работает по большей части. Когда я запускаю игру и ввожу имя, оно работает именно на этой карте. Однако, когда я перехожу к следующей карточке, где должно появиться имя String, оно отображается как null. Я подозреваю, что программа создает все карты, прежде чем дать возможность принять ввод имени, и поэтому не работает. Мой учитель тоже не знает, как это сделать.
Вот фрагмент кода:
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);
}
Вот также несколько фотографий программы во время работы.
Вот экран ввода имени после выбора имени и нажатия Enter:
А вот и следующая карта:
Заранее спасибо за помощь! (Я бы напрямую разместил изображения, но у меня недостаточно репутации)