想知道怎么修改才能使其符合要求

① 顶部两个文本框只接受大于0小于11的整数。
② 文本框数字改变时,自动刷新下部网格区域的按钮。
③ 鼠标进入按钮时,在该按钮上显示“*”。
④ 鼠标移出按钮时,隐藏该按钮上的文字。

img


import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;

class GUIProgram extends JFrame implements MouseListener {
    // 顶部的文本框
    private JTextField rowsField;
    private JTextField colsField;
    // 网格区域的按钮
    private JButton[][] buttons;
    public GUIProgram() {
        // 创建顶部的文本框
        rowsField = new JTextField();
        colsField = new JTextField();
        // 将文本框添加到窗口中
        add(rowsField);
        add(colsField);
        JPanel topPan = new JPanel(); // 顶部标签面板
        JPanel buttonPan = new JPanel(); // 按钮面板
        add(topPan, BorderLayout.NORTH);//将画板添加到窗口上,使用边界布局向北
        add(buttonPan, BorderLayout.CENTER);//将画板添加到窗口上,使用边界布局居中
        // 设置网格布局
        setLayout(new GridLayout(0, 2));
        JLabel A=new JLabel();
        JLabel B=new JLabel();
        // 设置窗口的大小
        setSize(400, 300);
        // 设置窗口的关闭操作
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 显示窗口
        setVisible(true);
    }
    // 刷新按钮的方法
    public void refreshButtons() {
        // 获取文本框中的数字
        int rows = Integer.parseInt(rowsField.getText());
        int cols = Integer.parseInt(colsField.getText());
        // 如果文本框中的数字不合法,则返回
        if (rows < 1|| rows > 10 || cols < 1 || cols > 10) {
            return;
        }
        // 删除所有组件
        removeAll();
        // 重新创建按钮
        buttons = new JButton[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                JButton button = new JButton();
                button.addMouseListener(this);
                buttons[i][j] = button;
                add(button);
            }
        }
        // 重新布局
        validate();
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new GUIProgram();
            }
        });
    }
    @Override
    public void mouseClicked(MouseEvent e) {
        // 当鼠标在按钮上点击时不执行任何操作
    }
    @Override
    public void mousePressed(MouseEvent e) {
        // 当鼠标在按钮上按下时不执行任何操作
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        // 当鼠标在按钮上释放时不执行任何操作
    }
    @Override
    public void mouseEntered(MouseEvent e) {
        // 当鼠标进入按钮时,在按钮上显示 "*"
        JButton button = (JButton) e.getSource();
        button.setText("*");
    }
    @Override
    public void mouseExited(MouseEvent e) {
        // 当鼠标离开按钮时,隐藏按钮上的文字
        JButton button = (JButton) e.getSource();
        button.setText("");
    }
}

为了使代码符合要求,你可以考虑以下修改:

① 顶部两个文本框只接受大于0小于11的整数

  • 在刷新按钮的方法中,使用正则表达式或者 isNumeric 函数来判断文本框中的字符串是否是数字,如果不是数字则返回,否则继续执行。
  • 在刷新按钮的方法中,判断文本框中的数字是否在合法的范围内(大于0小于11的整数),如果不是,则返回,否则继续执行。

② 文本框数字改变时,自动刷新下部网格区域的按钮

  • 为文本框添加 DocumentListener,在文本框的数字改变时调用刷新按钮的方法。

③ 鼠标进入按钮时,在该按钮上显示“*”

  • 在 mouseEntered 事件中,调用按钮的 setText 方法将文本设为“*”。

④ 鼠标移出按钮时,隐藏该按钮上的文字

  • 在 mouseExited 事件中,调用按钮的 setText 方法将文本设为空字符串。

以上是一些建议,你可以参考这些建议来修改代码,使其符合要求。