gpt4 book ai didi

java - 如何清除数组列表并显示空 JTable?

转载 作者:行者123 更新时间:2023-12-01 18:10:45 24 4
gpt4 key购买 nike

我目前正在制作老虎机游戏。

我有一个这样实现的历史功能。在我的类(class)中,我有以下静态变量static String[][]figureHistoryArray = new String [1000][4];

每次用户按下 GUI 中的“旋转”按钮时,都会激活一个名为 slotSpin() 的方法。

在这个方法中我得到了

figureHistoryArray[turnCounter][0]= rollOne.getFigureName();
figureHistoryArray[turnCounter][1]= rollTwo.getFigureName();
figureHistoryArray[turnCounter][2]= rollThree.getFigureName();

其中保存每个老虎机旋转。

之后我在 GUI 中显示数据

    private JTable historyTable;

在方法中:

    historyPanel = new JPanel();
historyPanel.setLayout( new BorderLayout() );
getContentPane().add(historyPanel );

// Create columns names
String columnNames[] = { "Slot 1", "Slot 2", "Slot 3", "Win/Loss" };

String[][] dataValues= TheBigA.figureHistoryArray;

// Create a new historyTable instance
historyTable = new JTable( dataValues, columnNames );

// Add the historyTable to a scrolling pane
this.scrollPanel = new JScrollPane( historyTable );
historyPanel.add(this.scrollPanel, BorderLayout.CENTER );
add(historyPanel);

现在我的问题是,每当用户按下“新游戏”时,上一个游戏的历史记录仍然会显示。我该如何解决这个问题

最佳答案

Now my issue is whenever the user presses "New Game" the history from the previous game is still being displayed. How would I go about fixing this

不要创建任何新的 Swing 组件。

相反,当您开始新游戏时,您会使用空的 TableModel 加载表格:

table.setModel( new DefaultTableModel(columnNames, 0) );

编辑:

so how would I update my table model to refer to this new array?

然后你做类似的事情:

historyArray = new String[1000, 4];
table.setModel( new DefaultTableModel(historyArray, columnNames);

但是,您实际上不应该这样做。数据应存储在 TableModel 中。您可以使用

动态地将数据添加到模型中
model.addRow(...);

当你想保存数据时,你可以迭代TableModel来保存数据。

或者如果您阅读了 JTable API,它建议您使用 XMLEncoder 来保存数据。查看此帖子,了解可用于保存/加载数据的通用解决方案:How to write a JTable state with data in xml file using XMLEndcoder in java

关于java - 如何清除数组列表并显示空 JTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33180921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com