我在滚动窗格中有一个 jtable。当部分超出视野的单元格获得焦点时,如何阻止滚动窗格向上或向下滚动?
问题是当用户将鼠标悬停在单元格上时,我将单元格设置为可编辑,因此当您将鼠标悬停在部分看不见的单元格上时,视图会突然改变。我不喜欢这种行为。关于如何改变它的任何想法?
我在滚动窗格中有一个 jtable。当部分超出视野的单元格获得焦点时,如何阻止滚动窗格向上或向下滚动?
问题是当用户将鼠标悬停在单元格上时,我将单元格设置为可编辑,因此当您将鼠标悬停在部分看不见的单元格上时,视图会突然改变。我不喜欢这种行为。关于如何改变它的任何想法?
您可以尝试在您的桌子上调用“setAutoscrolls(false)”。
尽管 javadoc 谈到了处理鼠标拖动事件,但它也应该禁用行/单元格部分的滚动。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class TableTest extends JFrame {
private JTable table;
/**
* Create a new TableTest Frame.
* @param title The title of the frame.
*/
public TableTest() {
Object[][] tableData = new Object[][] {
{1, "One"}, {2, "Two"}, {3, "Three"},
{4, "Four"}, {5, "Five"}, {6, "Six"}};
DefaultTableModel tableModel = new DefaultTableModel(tableData, new String[] {"A", "B"});
table = new JTable(tableModel);
table.setAutoscrolls(false);
JScrollPane scrolly = new JScrollPane(table);
setLayout(new BorderLayout());
add(scrolly, BorderLayout.CENTER);
}
/**
* @param args
*/
public static void main(String[] args) {
TableTest frame = new TableTest();
frame.pack();
frame.setSize(200, 100);
frame.setVisible(true);
}
}
我花了几个小时搜索,但我让它为我工作。
用您的 JTable 子类覆盖此方法
public void scrollRectToVisible(java.awt.Rectangle aRect)
{
if(getAutoscrolls())
super.scrollRectToVisible(aRect);
}
现在table.setAutoscrolls(false)
应该可以正常工作了。