Java 如何在ComboBox中使用ActionListener

Java 如何在ComboBox中使用ActionListener,java,button,actionlistener,Java,Button,Actionlistener,包主面板; 导入java.awt.FlowLayout; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 导入java.io.File; 导入java.io.FileNotFoundException; 导入java.util.*; 导入javax.swing.*; 公共类主面板扩展JFrame实现ActionListener{ 字符串[]deck=null; 字符串[]discard=null; 玩家p1; 玩家p2

包主面板;
导入java.awt.FlowLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.*;
导入javax.swing.*;
公共类主面板扩展JFrame实现ActionListener{
字符串[]deck=null;
字符串[]discard=null;
玩家p1;
玩家p2;
玩家p3;
public String[]playerList=新字符串[3];
JPanel窗格=新的JPanel();
JPanel playerStatPane=新的JPanel();
公共主面板()引发FileNotFoundException{
文件主列表=新文件(“H:/mainPanel/masterList.txt”);
文件deckFile=新文件(“H:/mainPanel/deck.txt”);
File discard File=新文件(“H:/mainPanel/discard.txt”);
File player1=新文件(“H:/mainPanel/Chip.txt”);
File player2=新文件(“H:/mainPanel/Dale.txt”);
File player3=新文件(“H:/mainPanel/Caleb.txt”);
deck=提取卡(deckFile);
if(deck.length==0){
卡片组=随机卡片(提取卡片(主列表));
}
丢弃=提取卡片(丢弃文件);
p1=新玩家(玩家1);
p2=新玩家(玩家2);
p3=新玩家(玩家3);
片名(“砰!”);
getContentPane()。添加(个窗格);
JLabel label1=新的JLabel();
playerList[0]=p1.name;
playerList[1]=p2.name;
playerList[2]=p3.name;
JComboBox组合框=新的JComboBox(playerList);
窗格。添加(组合框);
组合框。设置所选索引(2);
comboBox.addActionListener(这个);
playerStatPane=createStats(p1);
窗格。添加(playerStatPane);
}
公共静态void main(字符串[]args)引发FileNotFoundException{
主面板主屏幕=新的主面板();
mainScreen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainScreen.pack();
mainScreen.setVisible(真);
}
/**公共静态字符串[]随机卡片(字符串[]未填充卡片){
int[]tempInts=随机点(unshuffledCards.length);
String[]shuffledCards=新字符串[unshuffledCards.length];
对于(int i=0;icardsInHand=新的ArrayList();
扫描仪=新扫描仪(a);
while(scanner.hasNextLine()){
cardsInHand.add(scanner.nextLine());
}
返回cardsInHand.toArray(新字符串[cardsInHand.size()]);
}
公开无效抽签(球员a){
a、 addCard(deck[0]);
如果(甲板长度==1){
甲板=丢弃;
discard=新字符串[0];
}否则{
字符串[]tempDeck=deck;
甲板=新管柱[deck.length-1];
对于(int i=1;i}
您正在重新设置
playerStatPane
变量,但这并不意味着在
窗格中替换旧值。试试这个:

public void actionPerformed(ActionEvent e) {
    panes.remove(playerStatPane);
    JComboBox cb = (JComboBox) e.getSource();
    String name = (String) cb.getSelectedItem();
    if (name.equals("Chip")) {
      playerStatPane = createStats(p1);
    } else if (name.equals("Dale")) {
      playerStatPane = createStats(p2);
    } else {
      playerStatPane = createStats(p3);
    }
    panes.add(playerStatPane);
  }

首先,将字符串与equals进行比较,而不是与==good point进行比较。哎呀,忘了。啊,好吧!谢谢这很有帮助。现在,在我切换屏幕后,卡不会显示,我不能再按任何按钮。有人知道为什么吗?