jtable插入一个新行后,如何让滚动条滚动到最新的那行,并选中它 model是继承自AbstractTableModel,鄙视csdn的垃圾搜索,以前的帖子都搜不到了,自从改版基本不用,迫不得已才用了一下,结果可以搜到一堆垃圾,这样会造成多少帖子重复发布,你们就是不想把csdn建成个二流以上的论坛了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【fxbird】截止到2008-07-10 11:20:38的历史汇总数据(不包括此帖):发帖的总数量:126 发帖的总分数:3988 每贴平均分数:31 回帖的总数量:1030 得分贴总数量:285 回帖的得分率:27% 结贴的总数量:116 结贴的总分数:3758 无满意结贴数:10 无满意结贴分:380 未结的帖子数:10 未结的总分数:230 结贴的百分比:92.06 % 结分的百分比:94.23 % 无满意结贴率:8.62 % 无满意结分率:10.11 % 值得尊敬 JTable table = new JTable(); //滚动 table.scrollRectToVisible(aRect); //选中 table.setRowSelectionInterval(rowIndex, rowIndex); JTable jtable = new JTable();jtable.changeSelection(jtable.getRowCount()-1, 0, false, false); 我用这两种办法都不行:tblData.getCellEditor(searchedNotes.size(),1).getTableCellEditorComponent(tblData,"",true,searchedNotes.size(),1).requestFocus();tblData.getEditorComponent().requestFocus();searchedNotes是jtable里的数据List,tblData就是这个jtable 晕,你还没弄好阿...import java.awt.BorderLayout;import java.awt.Container;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;public class SimpleTest extends JFrame { private JTable table = new JTable(10, 10); private JButton button = new JButton("AddRow"); private Rectangle rect = new Rectangle(); public SimpleTest() { Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); contentPane.add(new JScrollPane(table), BorderLayout.CENTER); contentPane.add(button, BorderLayout.SOUTH); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ((DefaultTableModel) table.getModel()).insertRow( table.getRowCount() - 1, new Object[]{"", "", "", "", "", }); rect = new Rectangle(0, table.getHeight(), 20, 20); table.scrollRectToVisible(rect); table.setRowSelectionInterval(table.getRowCount() - 1, table.getRowCount() - 1); table.grabFocus(); table.changeSelection(table.getRowCount() - 1, 0, false, true); } }); } public static void main(String[] args) { SimpleTest st = new SimpleTest(); st.setVisible(true); st.setSize(300, 300); st.setDefaultCloseOperation(EXIT_ON_CLOSE); }} 照你的提示,我发现: tblData.grabFocus();//这个必须要有, tblData.changeSelection(row,1,false,false);这样也可以,不知为什么jtable先获得焦点才起作用,唉,swing真是太他妈难用了。连这么个简单的功能,都没有封装。其实我现在的问题是,虽然这样设置后,再按任何键,需要获得焦点、要编辑的单元格就可以被输入了,但外观看起来只是像其它的该行单元格一样,只是背景蓝了,没有出现光标,我想要的效果就是它获得光标的那种状态。这样做,首先要获得它的celleditor,不过我调用并不成功,获得不了。我如下设置它的背景色,只有当此单元格出现了光标时,背景才变红:JTextComponent text=(JTextComponent) tblData.getCellEditor(searchedNotes.size(),1).getTableCellEditorComponent(tblData,"",true,row,1); text.setBackground(Color.red); 让某单元格获得输入焦点用jtable.editCellat,好不容易发现的 如何使用SwingWorker类来实现界面实时强制自动刷新??? 一个很菜的问题,不知道为什么会这样。。 class.forName的安全问题 100分,兄弟。一个简单的java正则表达式问题。 用SWT实现的颜色拾取器,内存溢出问题 在Soap中:accessor 是什么意思啊! 偶是初学者想请教关于panel 菜鸟求助:关于paint的问题。 jdbc如果获取数据表字段的label(英文字段名的描述) 答一道题! 集合划分问题 哪位高手上点digester比较全面的中文学习资料?谢谢!
楼主【fxbird】截止到2008-07-10 11:20:38的历史汇总数据(不包括此帖):
发帖的总数量:126 发帖的总分数:3988 每贴平均分数:31
回帖的总数量:1030 得分贴总数量:285 回帖的得分率:27%
结贴的总数量:116 结贴的总分数:3758
无满意结贴数:10 无满意结贴分:380
未结的帖子数:10 未结的总分数:230
结贴的百分比:92.06 % 结分的百分比:94.23 %
无满意结贴率:8.62 % 无满意结分率:10.11 %
值得尊敬
JTable table = new JTable();
//滚动
table.scrollRectToVisible(aRect);
//选中
table.setRowSelectionInterval(rowIndex, rowIndex);
jtable.changeSelection(jtable.getRowCount()-1, 0, false, false);
tblData.getCellEditor(searchedNotes.size(),1).getTableCellEditorComponent(tblData,"",true,searchedNotes.size(),1).requestFocus();tblData.getEditorComponent().requestFocus();searchedNotes是jtable里的数据List,tblData就是这个jtable
import java.awt.Container;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;public class SimpleTest extends JFrame {
private JTable table = new JTable(10, 10); private JButton button = new JButton("AddRow"); private Rectangle rect = new Rectangle(); public SimpleTest() {
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
((DefaultTableModel) table.getModel()).insertRow(
table.getRowCount() - 1,
new Object[]{"", "", "", "", "", });
rect = new Rectangle(0, table.getHeight(), 20, 20);
table.scrollRectToVisible(rect);
table.setRowSelectionInterval(table.getRowCount() - 1, table.getRowCount() - 1);
table.grabFocus();
table.changeSelection(table.getRowCount() - 1, 0, false, true);
}
});
} public static void main(String[] args) {
SimpleTest st = new SimpleTest();
st.setVisible(true);
st.setSize(300, 300);
st.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
tblData.grabFocus();//这个必须要有,
tblData.changeSelection(row,1,false,false);
这样也可以,不知为什么jtable先获得焦点才起作用,唉,swing真是太他妈难用了。连这么个简单的功能,都没有封装。其实我现在的问题是,虽然这样设置后,再按任何键,需要获得焦点、要编辑的单元格就可以被输入了,但外观看起来只是像其它的该行单元格一样,只是背景蓝了,没有出现光标,我想要的效果就是它获得光标的那种状态。这样做,首先要获得它的celleditor,不过我调用并不成功,获得不了。我如下设置它的背景色,只有当此单元格出现了光标时,背景才变红:
JTextComponent text=(JTextComponent) tblData.getCellEditor(searchedNotes.size(),1).getTableCellEditorComponent(tblData,"",true,row,1);
text.setBackground(Color.red);