需要个添加历史记录的代码

package guess;
import java.awt.;
import java.awt.event.
;
import javax.swing.*;

public class guess {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    DrawFrame frame=new DrawFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}

}

class DrawFrame extends JFrame
{
private static int count=0;//猜测次数
private int rightNumber;//随机产生的供猜测的数字
private JTextField num;//输入的数字
private JLabel tip;//猜测次数提示
private JPanel panel;//中心输入框部分面板
private JLabel result;//猜测结果提示
private JButton button0=new JButton("开始");
private JButton button1=new JButton("确认");
private JButton button2=new JButton("重新开始");
private JButton button3=new JButton("退出");
private JButton button4=new JButton("玩法");
private JButton button5=new JButton("提示");

public DrawFrame()
{
    setBounds(700,200,450,200);
    setTitle("一个猜数游戏");
    rightNumber=(int)(Math.random()*40+10);
    
    //添加顶部次数提示
    tip=new JLabel("你已经猜了"+count+"次",JLabel.LEFT);
    
    //添加中心输入框部分
    panel = new JPanel();
    JLabel input=new JLabel("输入猜测的数");
    panel.add(input);
    num=new JTextField(20);
    panel.add(num);
    result=new JLabel();//显示猜测结果
    panel.add(result);
    
    //添加按钮
    JPanel buttons= new JPanel();
    ActionListener listener1=new ComfirmListener();
    button1.addActionListener(listener1);
    ActionListener listener2=new OtherListener2();
    button2.addActionListener(listener2);
    button3.addActionListener(listener2);
    button4.addActionListener(listener2);
    button5.addActionListener(listener2);
    
    //将按钮添加到panel中
    buttons.add(button0);
    buttons.add(button1);
    buttons.add(button2);
    buttons.add(button3);
    buttons.add(button4);
    buttons.add(button5);
    
    add(tip,"North");
    add(panel,"Center");
    add(buttons,"South");
}

//确认按钮的监听器类
class ComfirmListener implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
        //猜测正确
        if(Integer.parseInt(num.getText())==rightNumber)
        {
            //设置文本框不可编辑
            num.setEditable(false);
            
            //提示猜测次数+1
            tip.setText("你已经猜了"+(++count)+"次");
            
            //调整背景色为默认背景色
            Color defaultColor = getBackground();
            panel.setBackground(defaultColor);
            
            //显示猜测结果
            panel.setBackground(Color.green);
            result.setText("恭喜你猜对啦!!");
        }
        //小于
        else if(Integer.parseInt(num.getText())<rightNumber)
        {
            panel.setBackground(Color.red);
            tip.setText("你已经猜了"+(++count)+"次");
            result.setText("此次结果为:太小");
        }
        else
        {
            panel.setBackground(Color.red);
            tip.setText("你已经猜了"+(++count)+"次");
            result.setText("此次结果为:太大");
        }
    }
}


//重新开始和退出按钮以及帮助的监听器
class OtherListener2 implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
        //重新开始
        if(event.getSource()==button2)
        {
            //清除文本框内容
            num.setText("");
            
            //重新抽数字
            rightNumber=(int)(Math.random()*40+10);
                    
            //调整背景色为默认背景色
            Color defaultColor = getBackground();
            panel.setBackground(defaultColor);
            
            //猜测次数增加
            count=0;
            tip.setText("你已经猜了"+count+"次");
            
            //清除原猜测结果
            result.setText("");
            
        }
        else if(event.getSource()==button4) {
            JOptionPane.showMessageDialog(null, "玩法:请从10~50中用最少的次数猜一个随机的数字。祝你好运!");
            
        }
        else if(event.getSource()==button5) {
            JOptionPane.showMessageDialog(null,"提示:其一种解法用到高中确定区间零点的常用方法。");
            JOptionPane.showMessageDialog(null,"提示:其最优解是华罗庚发表的0.618优选法。");
        }
        
        //退出则关闭窗口
        else
        {
            setVisible(false);
        }
        
    }
    

}

}

package test;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class guess {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        DrawFrame frame = new DrawFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setBounds(100, 100, 784, 438);
        frame.setVisible(true);
    }
}

class DrawFrame extends JFrame {
    private static int count = 0;// 猜测次数
    private int rightNumber;// 随机产生的供猜测的数字
    private JTextField num;// 输入的数字
    private JLabel tip;// 猜测次数提示
    private JPanel panel;// 中心输入框部分面板
    private JLabel result;// 猜测结果提示
    private JButton button0 = new JButton("开始");
    private JButton button1 = new JButton("确认");
    private JButton button2 = new JButton("重新开始");
    private JButton button3 = new JButton("退出");
    private JButton button4 = new JButton("玩法");
    private JButton button5 = new JButton("提示");
    private JButton button6 = new JButton("历史记录");
    private List<String> countNum = new ArrayList<String>(); // 存储历史记录

    public DrawFrame() {
        setBounds(700, 200, 450, 200);
        setTitle("一个猜数游戏");
        rightNumber = (int) (Math.random() * 40 + 10);

        // 添加顶部次数提示
        tip = new JLabel("你已经猜了" + count + "次", JLabel.LEFT);

        // 添加中心输入框部分
        panel = new JPanel();
        JLabel input = new JLabel("输入猜测的数");
        panel.add(input);
        num = new JTextField(20);
        panel.add(num);
        result = new JLabel();// 显示猜测结果
        panel.add(result);

        // 添加按钮
        JPanel buttons = new JPanel();
        ActionListener listener1 = new ComfirmListener();
        button1.addActionListener(listener1);
        ActionListener listener2 = new OtherListener2();
        button2.addActionListener(listener2);
        button3.addActionListener(listener2);
        button4.addActionListener(listener2);
        button5.addActionListener(listener2);

        // 将按钮添加到panel中
        buttons.add(button0);
        buttons.add(button1);
        buttons.add(button2);
        buttons.add(button3);
        buttons.add(button4);
        buttons.add(button5);
        buttons.add(button6);

        add(tip, "North");
        add(panel, "Center");
        add(buttons, "South");
        button6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new popupWindows();
            }
        });
    }

    class popupWindows {
        JFrame mainWindow;

        public popupWindows() {
            mainWindow = new JFrame("历史记录");

            mainWindow.setVisible(true);
            mainWindow.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            mainWindow.setBounds(100, 100, 784, 438);
            mainWindow.getContentPane().setLayout(null);
            // 窗口显示在页面中间
            mainWindow.setLocationRelativeTo(null);
            // 窗口不允许调整大小
            mainWindow.setResizable(false);

            JScrollPane scrollPane = new JScrollPane();
            scrollPane.setBounds(14, 96, 738, 282);
            mainWindow.getContentPane().add(scrollPane);

            JTable table = new JTable();
            String[] str = new String[] { "序号", "猜测数" }; // 创建列数组
            // 构建二维数组存放信息
            Object[][] objects = new Object[countNum.size()][2];

            // 添加数据
            for (int i = 0; i < countNum.size(); i++) {

                objects[i][0] = "第" + (i + 1) + "次";
                objects[i][1] = "猜测数是: " + countNum.get(i);
            }
            table.setModel(new DefaultTableModel(objects, str));
            scrollPane.setViewportView(table);
            JLabel label = new JLabel("猜测正确数:" + (countNum.size() == 0 ? 0 : countNum.get(0)) + "次");
            label.setForeground(Color.DARK_GRAY);
            label.setBounds(333, 20, 136, 18);
            mainWindow.getContentPane().add(label);

        }
    }

    // 确认按钮的监听器类
    class ComfirmListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            if (countNum.size() == 0) {
                countNum.add("0");
            }
            // 猜测正确
            if (Integer.parseInt(num.getText()) == rightNumber) {
                int yesNum = Integer.parseInt(countNum.get(0));
                countNum.set(0, ++yesNum + "");
                // 设置文本框不可编辑
                num.setEditable(false);

                // 提示猜测次数+1
                tip.setText("你已经猜了" + (++count) + "次");

                // 调整背景色为默认背景色
                Color defaultColor = getBackground();
                panel.setBackground(defaultColor);

                // 显示猜测结果
                panel.setBackground(Color.green);
                result.setText("恭喜你猜对啦!!");
            }
            // 小于
            else if (Integer.parseInt(num.getText()) < rightNumber) {
                panel.setBackground(Color.red);
                tip.setText("你已经猜了" + (++count) + "次");
                result.setText("此次结果为:太小");
            } else {
                panel.setBackground(Color.red);
                tip.setText("你已经猜了" + (++count) + "次");
                result.setText("此次结果为:太大");
            }
            countNum.add(num.getText());
        }
    }

    // 重新开始和退出按钮以及帮助的监听器
    class OtherListener2 implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            // 重新开始
            if (event.getSource() == button2) {
                // 清除文本框内容
                num.setText("");

                // 重新抽数字
                rightNumber = (int) (Math.random() * 40 + 10);

                // 调整背景色为默认背景色
                Color defaultColor = getBackground();
                panel.setBackground(defaultColor);

                // 猜测次数增加
                count = 0;
                tip.setText("你已经猜了" + count + "次");

                // 清除原猜测结果
                result.setText("");
                // 清空
                countNum.clear();

            } else if (event.getSource() == button4) {
                JOptionPane.showMessageDialog(null, "玩法:请从10~50中用最少的次数猜一个随机的数字。祝你好运!");

            } else if (event.getSource() == button5) {
                JOptionPane.showMessageDialog(null, "提示:其一种解法用到高中确定区间零点的常用方法。");
                JOptionPane.showMessageDialog(null, "提示:其最优解是华罗庚发表的0.618优选法。");
            }

            // 退出则关闭窗口
            else {
                setVisible(false);
            }

        }

    }
}