我有一个JTable
(master),我添加了一个ListSelectionListener
以便在选择行时捕获并根据所选行填充另一个JTable
(详细信息)。
现在一些要求已经改变,如果满足条件,当用户点击另一行时,我应该显示带有YES / NO选项的JOptionPane
,并且只有在单击YES时才能选择新行。
我怎样才能做到这一点?我要一直使用ListSelectionListener
吗?我不这么认为,只有在选择完成后才会提出。
答案 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(...)
。
但是,如果此选项窗格不断弹出,我会发现尝试使用键盘向下滚动表格会让人感到沮丧。请记住设计一个有效支持鼠标和键盘的用户界面。