Saya harus membuat game untuk proyek sekolah di CS. Saya ingin membuatnya agar seseorang dapat memasukkan namanya dan semua panel berikutnya akan mencantumkan namanya. Saya menggunakan tata letak kartu, yang sebagian besar berfungsi. Ketika saya menjalankan permainan dan memasukkan namanya, itu bekerja secara khusus pada kartu itu. Namun, ketika saya pergi ke kartu berikutnya, di mana nama String seharusnya muncul, itu muncul sebagai nol. Kecurigaan saya adalah bahwa program tersebut membuat semua kartu sebelum diberi kesempatan untuk menerima masukan nama dan oleh karena itu gagal. Guru saya juga tidak begitu tahu bagaimana melakukannya.
Berikut adalah segmen kodenya:
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);
}
Berikut juga beberapa foto program saat dijalankan.
Berikut adalah layar memasukkan nama setelah memilih nama dan menekan enter:
Dan inilah kartu berikutnya:
Terima kasih sebelumnya atas bantuannya! (Saya akan langsung memposting gambarnya tetapi saya tidak memiliki reputasi yang cukup)