首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在JTable中选择行时JButton未重新启用

的问题,可能是由于事件处理的逻辑问题导致的。以下是可能的解决方案:

  1. 确保你已经正确地为JTable添加了行选择事件的监听器。可以使用ListSelectionListener来监听行选择事件。当选择行发生变化时,监听器会被触发。
  2. 在监听器中,你需要获取当前选择的行数。可以使用JTable的getSelectedRow()方法来获取当前选择的行数。
  3. 判断当前是否有行被选择。如果有行被选择,将JButton设置为可用状态,否则设置为不可用状态。可以使用JButton的setEnabled()方法来设置按钮的可用状态。

下面是一个示例代码,演示了如何解决这个问题:

代码语言:txt
复制
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class Example {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JTable Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建一个JTable
        Object[][] data = {
                {"John", "Doe"},
                {"Jane", "Smith"},
                {"Bob", "Johnson"}
        };
        String[] columnNames = {"First Name", "Last Name"};
        JTable table = new JTable(data, columnNames);

        // 创建一个JButton
        JButton button = new JButton("Delete");
        button.setEnabled(false); // 初始状态下设置为不可用

        // 添加行选择事件的监听器
        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                // 获取当前选择的行数
                int selectedRow = table.getSelectedRow();

                // 判断是否有行被选择
                if (selectedRow != -1) {
                    button.setEnabled(true); // 有行被选择,设置按钮为可用状态
                } else {
                    button.setEnabled(false); // 没有行被选择,设置按钮为不可用状态
                }
            }
        });

        // 创建一个面板,并将JTable和JButton添加到面板中
        JPanel panel = new JPanel();
        panel.add(new JScrollPane(table));
        panel.add(button);

        // 将面板添加到框架中
        frame.add(panel);

        // 设置框架大小并显示
        frame.setSize(300, 200);
        frame.setVisible(true);
    }
}

在这个示例中,当选择JTable中的行时,按钮的可用状态会相应地改变。如果有行被选择,按钮将变为可用状态,否则按钮将变为不可用状态。

对于腾讯云相关产品和产品介绍链接地址,由于不能提及具体的品牌商,建议你参考腾讯云的官方文档和网站,了解他们提供的云计算解决方案和相关产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 脏读,不可重复读,幻读

    MySQL里共有四个隔离级别,分别是:Read uncommttied(可以读取提交数据)、Read committed(可以读取已提交数据)、Repeatable read(可重复读)、Serializable...脏读现象: 默认的事务隔离级别下,我们是无法读取到提交的数据的,能够读取到提交数据的事务隔离级别下,才会出现脏读现象。...幻读现象: 幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表的数据进行了修改,比如这种修改涉及到表的“全部数据行”。...同时,第二个事务也修改这个表的数据,这种修改是向表插入“一行新数据”。...因为别人查询到这几张票的时候这几张票处于锁定状态,所以你就查询不到,如果对方放弃购买的话,这些票又重新回到出售界面了,所以你第二次查询的才会发现多了几张票,这就是幻读在实际生活的一个应用例子。

    1.7K10

    新特性解读 | MySQL 8.0.16 组复制启用成员自动重新加入

    其中一个功能是能够某些情况下启用已离开组的成员自动重新加入,而无需用户干预。 为了理解这个功能的好处以及如何使用它,我们将快速查看它背后的概念以及它首先存在的动机。...其中新成员需要在事务方面赶上组进度(是通过选择组内一个成员来将已处理的事务流式传输给他, MGR 称为“捐赠”)。...通过使用驱逐超时,您可以维护组可疑的成员,其缺点是您无法添加或删除成员或选择新的主机。...所以,总结一下: 驱逐超时的优点 - 该成员一直该组内 - 可能更适合足够小的网络故障 驱逐超时的缺点 - 怀疑某个成员时,无法该组上添加/删除成员 - 怀疑某个成员时,无法选择新的主机...- 可能不适合足够小的网络故障 总而言之,我从启用自动重新加入获得了什么?

    1.3K20

    Java私活200元,完成JavaSwing学生成绩管理系统(三)

    例:管理员 是否查询 增删改查的查找功能,如果查询设为【是】,则该属性会作为查询条件,例:可以通过姓名来查找学生 是否统计 系统查询功能,对于查出的数据会进行自动统计,例:每天的营业额设为统计,将自动对查询出来的数据求和...例如:借阅系统,我们希望读者只能看到自己的借阅记录。...3、 便利的查询,C#和Java的查询框是可以设置为下拉框的,以下例子,因为课程和学生都是外键而且他们是查询条件,所以生成的成绩管理系统,查成绩的时候,可以通过下拉框来选择查询某个学生、课程的成绩...addBtn = new JButton("增加"); JButton updateBtn = new JButton("修改"); JButton delBtn = new JButton...MainViewTableModel mainViewTableModel = MainViewTableModel.assembleModel(dto.getData()); // 把jtable

    68510

    Java Swing 期末大作业-----图书借阅管理系统

    如果是第一次来借书,那么必须要在系统创建读者信息, 根据读者id进行借阅书籍,所以需要一个读者信息增加功能。系统管理员给长期不借阅书籍的读者注销读者用户,需要读者信息删除功能。...9.图书借阅功能实现    表单显示所有已经被借走的书籍信息,点击借阅,将借阅的信息进行增加到bookBorrow的表。点击关闭页面正常退出。...10.图书归还功能实现    表单显示所有已经被借走的书籍信息,点击归还,将借阅的信息进行删除。点击关闭页面正常退出。...11.用户增加功能实现    文本框输入用户名和密码,点击添加,将对应信息放到user类插入到user表。 用户名都是唯一的,不能输入已经存在过的用户名。...12.用户删除功能实现 文本框输入用户名,点击删除按钮,user表对数据进行删除 13.修改密码功能实现,如图36所示   设置非空校验。

    3.7K40

    Swing的介绍

    几乎所有组件都采用纯Java实现,所以无须考虑底层平台是否支持该组件,因此Swing可以提供如JTabbedPane,JDesktopPane,JInternalFarme等特殊的容器,也可以提供像JTree,JTable...Swing组件各种平台上运行时可以保证具有相同的图形界面外观....用于控制对于各种事件,组件做出怎样的响应.当模型发送改变时,它会通知所有依赖它的视图,视图会根据模型数据更新自己.Swing使用UI代理来包装视图和控制器,还有另一个模型对象来维护该组件的状态.例如 , 按钮JButton...有一个维护其状态信息的模型ButtonModel对象,Swing组件的模型是自动设置的,因此一般都使用JButton,而无须关系ButtonModel对象.因此, Swing组件的模型是自动设置的,因此一般都使用...JButton,而无须关系ButtonModel对象.因此,Swing的MVC实现也被称为Model-Delegate(模型--代理)

    1.1K20
    领券