Java swing Jtable问题 20
有个Table,数据很多,有滚动条。还有个文本框和查询按钮。在文本框中输入文字,按查询按钮,如果表中存在该数据,如何在按下查询按钮时让滚动条自动滚动,以便显示满足条件的单...
有个Table,数据很多,有滚动条。 还有个文本框和查询按钮。
在文本框中输入文字,按查询按钮,如果表中存在该数据,如何在按下查询按钮时让滚动条自动滚动,以便显示满足条件的单元格? 展开
在文本框中输入文字,按查询按钮,如果表中存在该数据,如何在按下查询按钮时让滚动条自动滚动,以便显示满足条件的单元格? 展开
3个回答
展开全部
很简单
Rectangle rect = table.getCellRect(n,0,true);// 返回位于 n 和 0 相交位置的单元格矩形。
table.scrollRectToVisible(rect); //设置滚动条值
你只要搜索后得到查找后的单元格或者row 得到矩形区域 使用scrollRectToVisible(rect);就自动滚动了
Rectangle rect = table.getCellRect(n,0,true);// 返回位于 n 和 0 相交位置的单元格矩形。
table.scrollRectToVisible(rect); //设置滚动条值
你只要搜索后得到查找后的单元格或者row 得到矩形区域 使用scrollRectToVisible(rect);就自动滚动了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class TablePanel extends JPanel {
static int n = 0;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(3);
final JTable table = new JTable(new AbstractTableModel() {
@Override
public int getRowCount() {
return 111;
}
@Override
public String getColumnName(int column) {
return column + "";
}
@Override
public int getColumnCount() {
return 111;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return rowIndex + columnIndex;
}
});
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(true);
frame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
final JTextField text = new JTextField();
text.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int m = 0;
for (int i = 0; i < table.getRowCount(); i++) {
for (int j = 0; j < table.getColumnCount(); j++) {
System.out.println("row = " + i + "column = " + j);
if (table.getValueAt(i, j).toString().equals(text.getText())) {
m++;
if (m - n == 1) {
n = m;
table.clearSelection();
table.scrollRectToVisible(table.getCellRect(i, j, true));
table.changeSelection(i, j, false, false);
return;
}
}
}
}
}
});
frame.getContentPane().add(text, BorderLayout.NORTH);
frame.setSize(800, 800);
frame.setVisible(true);
}
}
static int n = 0;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(3);
final JTable table = new JTable(new AbstractTableModel() {
@Override
public int getRowCount() {
return 111;
}
@Override
public String getColumnName(int column) {
return column + "";
}
@Override
public int getColumnCount() {
return 111;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return rowIndex + columnIndex;
}
});
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(true);
frame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
final JTextField text = new JTextField();
text.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int m = 0;
for (int i = 0; i < table.getRowCount(); i++) {
for (int j = 0; j < table.getColumnCount(); j++) {
System.out.println("row = " + i + "column = " + j);
if (table.getValueAt(i, j).toString().equals(text.getText())) {
m++;
if (m - n == 1) {
n = m;
table.clearSelection();
table.scrollRectToVisible(table.getCellRect(i, j, true));
table.changeSelection(i, j, false, false);
return;
}
}
}
}
}
});
frame.getContentPane().add(text, BorderLayout.NORTH);
frame.setSize(800, 800);
frame.setVisible(true);
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当点击查询按钮时获取文本框中的职,然后比较table中是否存在,如果存在修改光标位置到所在处
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询