首页
学习
活动
专区
工具
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中的行时,按钮的可用状态会相应地改变。如果有行被选择,按钮将变为可用状态,否则按钮将变为不可用状态。

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

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

相关·内容

  • Swing的介绍

    Swing是一个为java设计的GUI工具包.Swing是JAVA基础类的一部分.Swing包括了图形用户界面(GUI)器件如 : 文本框,按钮,分隔窗格和表.Swing提供许多比AWT更好的屏幕显示元素.它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT.它们是JFC一部分.它们支持可更换的面板和主题,然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们.这意味着你可以在任意平台上使用JAVA支持的任意面板.轻量级组件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为.Swing开发图形界面比AWT更加优秀,因为Swing是一种轻量级组件,它采用100%的java实现,不再依赖于本地平台的,图形界面.,所以可以在所有平台上保持相同的运行效果,对跨平台支持比较出色.由于AWT需要调用底层平台的GUI实现,所以AWT只能使用各种平台上GUI组件的交集,这大大限制了AWT所支持的GUI组件.对Swing而言,几乎所有组件都采用纯Java实现,所以无须考虑底层平台是否支持该组件,因此Swing可以提供如JTabbedPane,JDesktopPane,JInternalFarme等特殊的容器,也可以提供像JTree,JTable,JSpinner,JSlider等特殊的GUI组件.

    02

    图书管理系统 出现的问题

    JButton button_ok = new JButton("确定",new ImageIcon("ok.png")); southPanel.add(button_ok); button_ok.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { File f1 =SearchFrame.this.getClassName(); File[] f = f1.listFiles(); try { FileInputStream fr = new FileInputStream(f[0]); ObjectInputStream obo = new ObjectInputStream(fr); boolean exist = false;//用来判断有没有查到 do{ book_search =(Book)obo.readObject(); System.out.println(book_search); if(book_search.toString().contains(textField.getText())) { exist =true; Object[][] book=new Object[1][]; book[0][0]=book_search.getNumber(); book[0][1]=book_search.getName(); book[0][2]=book_search.getAuthor(); book[0][3]=book_search.getPress(); book[0][4]=book_search.getCount(); String [] book_info = {"编号","书名 ","作者","出版社","数量"}; table_search = new JTable(book,book_info); new SearchResult(); } }while(book_search==null); //当没有检索到书的时候显示结果 if(!exist){ JLabel label_result = new JLabel("没有检索到该书!!"); JOptionPane.showConfirmDialog(SearchFrame.this, label_result,"图书管理系统检索结果", JOptionPane.PLAIN_MESSAGE,JOptionPane.OK_OPTION , new ImageIcon("result.png")); } obo.close(); }catch(InvalidClassException e3) { e3.printStackTrace(); } catch (ClassNotFoundException e1) { e1.printStackTrace(); }catch(StreamCorruptedException e4){ e4.printStackTrace(); }catch(OptionalDataException e5) { e5.printStackTrace(); }catch(FileNotFoundException e6) { } catch (IOException e2) { e2.printStackTrace(); } } });

    04

    jTable插件辅助资料

    ==============================================jTable插件================================================ 【】引入jtable <link rel="stylesheet" type="text/css" href="../jtable/themes/lightcolor/blue/jtable.min.css" /> <script type="text/javascript" src="../jtable/jquery.jtable.min.js"></script> <script type="text/javascript" src="../jtable/localization/jquery.jtable.zh-CN.js"></script> 注:jTable插件需要jquery UI插件。之前要引入jQuery和jQueryUI 【】Servlet生成JSON结果 collegeList=collegeBusiness.getListByAll(); //定义数据返回JSON map Map<String, Object> jsonMap = new HashMap<String, Object>(); jsonMap.put("Result", "OK"); jsonMap.put("Records", collegeList); JSONObject result=JSONObject.fromObject(jsonMap); HttpServletResponse response=ServletActionContext.getResponse(); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter out=response.getWriter(); out.println(result.toString()); out.flush(); out.close(); 【】jtable要求的返回格式 {  "Result":"OK",  "Records":[   {"PersonId":1,"Name":"Benjamin Button","Age":17,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":2,"Name":"Douglas Adams","Age":42,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":3,"Name":"Isaac Asimov","Age":26,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":4,"Name":"Thomas More","Age":65,"RecordDate":"\/Date(1320259705710)\/"}  ] } 【】当出现异常后的jTable要求的结果 {    "Result":"ERROR",    "Message":"异常信息字符串" } 【】jTable的语法  $('#MyTableContainer').jtable({             //General options comes here             actions: {                 //Action definitions comes here             },             fields: {                 //Field definitions comes here             }             //Event handlers... });      【】jtable初始化 1.定义jTable显示的区域div

    2.在JS中初始化jTable //定义部门表格 $('div#departmentmaincontent').jtable({            title: '部门列表',            selecting: true, //Enable selecting            multiselect: false, //not Allow mu

    04
    领券