【发布时间】:2014-01-02 11:46:00
【问题描述】:
祝大家新年快乐! :)
我在JScrollPane 内有一个JTable(fillsViewportHeight 是true)并且希望在表格外部开始拖动时从末尾启用行选择(如图所示)
SSCCE:
public class SimpleTableDemo extends JPanel {
public SimpleTableDemo() {
super(new BorderLayout(0, 0));
String[] columnNames = { "First Name", "Last Name", "Sport", "# of Years", "Vegetarian" };
Object[][] data = { { "Kathy", "Smith", "Snowboarding", new Integer(5), new Boolean(false) }, { "John", "Doe", "Rowing", new Integer(3), new Boolean(true) }, { "Sue", "Black", "Knitting", new Integer(2), new Boolean(false) }, { "Jane", "White", "Speed reading", new Integer(20), new Boolean(true) }, { "Joe", "Brown", "Pool", new Integer(10), new Boolean(false) } };
final JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane, BorderLayout.CENTER);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("SimpleTableDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(700, 400);
SimpleTableDemo newContentPane = new SimpleTableDemo();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
我该怎么做?
UPD:
JTable 的默认行为是选择从开始到当前行的所有行,如果我开始选择低于最后一行。 我想在我向上拖动鼠标时只选择鼠标下方的行(如图所示)。
【问题讨论】:
-
设置ListSelectionModel.SINGLE_INTERVAL_SELECTION会发生什么,默认为
MULTIPLE_INTERVAL_SELECTION -
1.你必须使用 SINGLE_...,2. 你想从一个选定的行中选择所有行到 JTables 视图末尾的问题(在这种情况下,是否排序或过滤无关紧要,选择仅与 JTables 视图有关),例如然后选择第一行以选择JTable中的所有行,这是真的??? 3.你想把这个选择存储在SelectionModel中
-
@mKorbel 1. 我说,它没有任何改变; 2. 对不起,我不明白你的意思; 3. 是的,当然。
-
@trashgod 谢谢,但这不是我的意思
标签: java swing jtable jscrollpane