我有一個JTable,我想用鼠標光標(如在Excel中)調整行高度。你能建議我如何去完成這項任務。使用JTable上的光標調整單獨的行高度
2
A
回答
1
如果JTable本身不支持它,那麼你運氣不好,因爲這個任務將很難管理。
你將真正需要做的是寫一個或兩個監聽器:
- 一個
MouseMotionListener
,即能跟蹤鼠標 - 一個
MouseListener
的拖動,即能跟蹤所有其他鼠標動作
從此開始,您將必須瞭解何時用戶開始將鼠標拖到行分隔線上,然後使用正確的方法:setRowHeight(int,int)
(對於特定行)或setRowHeight(int)
(適用於所有行)。
這並不容易,它建議您不要試圖做到動態(在鼠標移動時更新高度)。
2
發現在Sun/Oracle的論壇很久以前這個代碼...
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.MouseInputAdapter;
import java.awt.*;
import java.awt.event.MouseEvent;
public class TableRowResizer extends MouseInputAdapter
{
public static Cursor resizeCursor = Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR);
private int mouseYOffset, resizingRow;
private Cursor otherCursor = resizeCursor;
private JTable table;
public TableRowResizer(JTable table){
this.table = table;
table.addMouseListener(this);
table.addMouseMotionListener(this);
}
private int getResizingRow(Point p){
return getResizingRow(p, table.rowAtPoint(p));
}
private int getResizingRow(Point p, int row){
if(row == -1){
return -1;
}
int col = table.columnAtPoint(p);
if(col==-1)
return -1;
Rectangle r = table.getCellRect(row, col, true);
r.grow(0, -3);
if(r.contains(p))
return -1;
int midPoint = r.y + r.height/2;
int rowIndex = (p.y < midPoint) ? row - 1 : row;
return rowIndex;
}
public void mousePressed(MouseEvent e){
Point p = e.getPoint();
resizingRow = getResizingRow(p);
mouseYOffset = p.y - table.getRowHeight(resizingRow);
}
private void swapCursor(){
Cursor tmp = table.getCursor();
table.setCursor(otherCursor);
otherCursor = tmp;
}
public void mouseMoved(MouseEvent e){
if((getResizingRow(e.getPoint())>=0)
!= (table.getCursor() == resizeCursor)){
swapCursor();
}
}
public void mouseDragged(MouseEvent e){
int mouseY = e.getY();
if(resizingRow >= 0){
int newHeight = mouseY - mouseYOffset;
if(newHeight > 0)
table.setRowHeight(resizingRow, newHeight);
}
}
}
相關問題
- 1. 自動調整JTable中行的高度
- 2. 如何在用戶鍵入時調整JTable行的高度?
- 3. C# - 使用鼠標調整Windows Form上TextBox的高度
- 4. 使用UIImageView調整單元格高度
- 5. JTable中調整列的寬度或高度
- 6. 使用Highcharts調整高度
- 7. 調整在dashboardHeader整個標題欄的高度光澤的儀表盤
- 8. iOS - 自動調整單元格高度和標籤高度
- 9. JScrollpane中的JTable調整顯示組件的高度
- 10. Fullcalender調度程序調整行高度
- 11. 網格行高度調整
- 12. TCPDF - 如何調整標題的高度?
- 13. jQuery自動調整標籤的高度
- 14. 調整標籤的高度以外TD
- 15. WPF行標題寬度和列標題高度調整大小
- 16. 如何調整此菜單的高度?
- 17. 如何調整自定義大小(在單獨的文件中創建)使用它的ViewController上的UIView高度?
- 18. scrollView上的UIWebView調整高度
- 19. 根據包裹標題高度調整UINavigationBar的高度?
- 20. 調整DIV高度可調整大小的iframe高度
- 21. 調整ExtJS Grid Panel行的高度
- 22. 如何調整JXTable的行高度
- 23. 在光標行上使用
- 24. 手形光標禁用JTable
- 25. 調整JTable中的一個單元而不是整行
- 26. Android:調整customview的高度
- 27. 調整模式的高度
- 28. 調整高度的iframe
- 29. 調整scrollView的高度
- 30. 調整JPanel的高度
這是一個古老的答案,但我可以證實它很好地工作。謝謝。 – 2014-01-07 06:39:50