JTable:根据用户输入等待选择行

时间:2017-11-02 14:59:12

标签: java swing jtable joptionpane listselectionlistener

我有一个JTable(master),我添加了一个ListSelectionListener以便在选择行时捕获并根据所选行填充另一个JTable(详细信息)。 现在一些要求已经改变,如果满足条件,当用户点击另一行时,我应该显示带有YES / NO选项的JOptionPane,并且只有在单击YES时才能选择新行。 我怎样才能做到这一点?我要一直使用ListSelectionListener吗?我不这么认为,只有在选择完成后才会提出。

2 个答案:

答案 0 :(得分:1)

是的,肯定是

table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
        public void valueChanged(ListSelectionEvent event) {
            // do some actions here, for example
            // print first column value from selected row
            System.out.println(table.getValueAt(table.getSelectedRow(), 0).toString());
        }
    });

答案 1 :(得分:0)

  

当用户点击另一行时

当用户使用向上/向下箭头键移动到另一行时怎么办?

两种情况下的默认行为是自动选择行。

您可以覆盖JTable的body { background: #246A73; box-sizing: border-box; } *, *:before, *:after { box-sizing: border-box; } .grid-container { width: 100%; max-width: 480px; margin-left: auto; margin-right: auto; } .row:before, .row:after { content: ''; dispay: table; clear: both; } .col { margin: 3% auto 0; height: 350px; text-align: center; width: 100%; background: #ccc; } @media screen and (min-width: 850px) { .grid-container { max-width: 750px; } .col { float: left; width: 49%; margin: 3% 2% 0% 0%; } .col:nth-child(2n+2) { margin-right: 0; float: left; } } @media screen and (min-width: 980px) { .grid-container { max-width: 900px; } } @media screen and (min-width: 1200px) { .grid-container { max-width: 1100px; } .col { width: 32%; margin: 1% 2% 0% 0; } div.col:nth-child(3n+3) { margin-right: 0; float:left; } } 方法。我相信这是由鼠标或键盘逻辑调用以更改行选择的方法。

因此,您将添加逻辑以显示选项窗格,然后如果选择“是”,您将调用changeSelection(...)

但是,如果此选项窗格不断弹出,我会发现尝试使用键盘向下滚动表格会让人感到沮丧。请记住设计一个有效支持鼠标和键盘的用户界面。