【发布时间】:2015-06-03 23:15:59
【问题描述】:
我必须为 CS 中的一个学校项目制作游戏。我想做这样一个人可以输入他们的名字,并且所有后续面板都会有他们的名字。我正在使用卡片布局,它在大多数情况下都有效。当我运行游戏并输入名称时,它专门用于该卡。但是,当我转到下一张应该出现字符串名称的卡片时,它显示为空。我怀疑该程序在有机会接受名称输入之前创建了所有卡片,因此失败了。我的老师也不知道该怎么做。
下面是一段代码:
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);
}
这里还有一些程序运行时的照片。
这是选择名称并按回车后的名称输入屏幕:
然后是下一张卡片:
提前感谢您的帮助! (我会直接发布图片,但我没有足够的声誉)
【问题讨论】:
标签: java swing user-interface actionlistener cardlayout