您好!问题出在添加按钮的时候,代码中使用了错误的参数。在for循环中,将`names`作为参数传递给了`add()`方法,而实际上应该传入`names[i]`来表示每个按钮的文本。
修改后的代码如下:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CardLayoutDemo {
Frame fr = new Frame();
String[] names = { "第一张", "第二张", "第三张", "第四张", "第五张" };
Panel pan = new Panel();
public void init(){
final CardLayout c = new CardLayout(); //卡片布局
pan.setLayout(c);
for (int i = 0; i < names.length; i++) {
pan.add(names[i],new Button(names[i]));
}
Panel p1 = new Panel();
Button previous = new Button("上一张");
previous.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
c.previous(pan);
}
});
Button next = new Button("下一张");
next.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
c.next(pan);
}
});
Button first = new Button("第一张");
first.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
c.first(pan);
}
});
Button last = new Button("最后一张");
last.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
c.last(pan);
}
});
Button third =new Button("第三张");
third.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
c.show(pan,"第三张");
}
});
p1.add(previous);
p1.add(next);
p1.add(first);
p1.add(last);
p1.add(third);
fr.add(pan);
fr.add(p1, BorderLayout.SOUTH);
fr.pack();
fr.setVisible(true);
}
public static void main(String[] args) {
new CardLayoutDemo().init();
}
}
现在运行程序,应该能正确显示按钮的文本了。希望能帮到您!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |