在表中
int[] selectedRows;
jTable.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) { } public void mouseReleased(MouseEvent evt) {
}
}//行选择完成后,拖动所选择的行
jTableSourceFile.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
//在 addMouseListener 按下及弹起中已得到selectedRows
if(selectedRows!= null && selectedRows.length > 0)
{
jTableQualifyPage.clearSelection();
for(int i = 0; i < selectedRows.length; i++)
{
jTableQualifyPage.addRowSelectionInterval(selectedRows[i],selectedRows[i]);
}
}
}
}selectedRows里的行索引数据是正确的一个奇怪的问题:
在工程中,有俩个界面用到了,一个表中拖动后界面显示是正确的,二另一个表中拖动后界面选择不正确呵呵!~怪怪的问题
int[] selectedRows;
jTable.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) { } public void mouseReleased(MouseEvent evt) {
}
}//行选择完成后,拖动所选择的行
jTableSourceFile.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
//在 addMouseListener 按下及弹起中已得到selectedRows
if(selectedRows!= null && selectedRows.length > 0)
{
jTableQualifyPage.clearSelection();
for(int i = 0; i < selectedRows.length; i++)
{
jTableQualifyPage.addRowSelectionInterval(selectedRows[i],selectedRows[i]);
}
}
}
}selectedRows里的行索引数据是正确的一个奇怪的问题:
在工程中,有俩个界面用到了,一个表中拖动后界面显示是正确的,二另一个表中拖动后界面选择不正确呵呵!~怪怪的问题
jTableSourceFile.addMouseListener(new MouseAdapter() {
boolean contain = false;
public void mousePressed(MouseEvent evt) {
contain = false;
if(evt.getButton() == MouseEvent.BUTTON3)
{
Point p = evt.getPoint();
setSelectRow(p);
} if(selectedPages == null || selectedPages.length <= 0)
{
selectedPages = jTableSourceFile.getSelectedRows();
return;
}
if (evt.getButton() == MouseEvent.BUTTON1) {
Point p = evt.getPoint();
int selectRow = jTableSourceFile.rowAtPoint(p);
int i=0;
for(; i<selectedPages.length; i++) {
if(selectRow == selectedPages[i]) {
contain = true;
break;
}
}
if(!contain) {
selectedPages = new int[]{selectRow};
}
}
}
public void mouseReleased(MouseEvent evt) {
if(evt.getButton() == MouseEvent.BUTTON1)
{
if(evt.isControlDown() || evt.isShiftDown())
{
selectedPages = jTableSourceFile.getSelectedRows();
return;
}
else if(!contain && selectedPages != null && jTableSourceFile.getSelectedRows().length > 0)
{
selectedPages = jTableSourceFile.getSelectedRows();
}
} if(!contain && evt.getButton() == MouseEvent.BUTTON1 && !evt.isAltDown() && !evt.isControlDown() && !evt.isShiftDown())
{
jTableSourceFile.clearSelection();
jTableSourceFile.setRowSelectionInterval(selectedPages[0],selectedPages[0]);
}
if(evt.isPopupTrigger())
mousePopupMenu(evt, 0);
}
});
jTableSourceFile.addMouseMotionListener(new MouseMotionAdapter() {
int count = 0;
public void mouseDragged(MouseEvent e) {
if(count++ % 3 == 0) {
jTableSourceFile.clearSelection();
if(selectedPages != null && selectedPages.length > 0
&& selectedPages.length <jTableSourceFile.getRowCount())
{
for(int i = 0; i < selectedPages.length; i++)
{
jTableSourceFile.addRowSelectionInterval(selectedPages[i],selectedPages[i]);
}
}
}
}
});
table.setTransferHandler(new TableTransferHandler());//自定义一个Handler
我试试你说的那样看看。我刚才深入看了下拖拽源的代码,确实没必要写那么。我刚刚工作没多久,参与这个项目时已经成规模了,但里面N多的bug
swing方面很多的不懂。问下,你也是搞swing方面的吗?