首頁  >  文章  >  Java  >  如何在 JTable 中啟用非連續儲存格選擇?

如何在 JTable 中啟用非連續儲存格選擇?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-12 11:49:01320瀏覽

How Can I Enable Non-Continuous Cell Selection in a JTable?

如何在 JTable 中啟用非連續單元格選擇

在標準 JTable 實作中,使用者只能選擇連續單元格群組。但是,有一些方法可以自訂此行為以允許單一和非連續的單元格選擇。

方法1:使用CTRL 修飾符

如果JTable 的選擇模式設定為ListSelectionModel.SINGLE_SELECTION,按住CTRL鍵的同時點選不連續的儲存格將選擇它們

方法2:重寫processMouseEvent方法

為了更好地控制選擇行為,您可以重寫 JTable 子類別的 processMouseEvent 方法。在重寫的方法中,您可以修改修飾符以使 JTable 在處理滑鼠事件時確信 CTRL 鍵已按下。

以下是範例程式碼片段:

public class Ctrl_Down_JTable extends JTable {

    private static final long serialVersionUID = 1L;

    @Override
    protected void processMouseEvent(MouseEvent e) {
        int modifiers = e.getModifiers() | InputEvent.CTRL_MASK;
        int modifiersEx = e.getModifiersEx() | InputEvent.CTRL_MASK;
        MouseEvent myME = new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), modifiers, e.getX(),
                e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), e.getButton());
        super.processMouseEvent(myME);
    }
}

方法3:使用自訂ListSelectionModel

另一個選項是建立一個自訂ListSelectionModel支援非連續小區選擇。這涉及擴展 DefaultListSelectionModel 類別並重寫特定方法來實現所需的功能。

注意:

  • 非連續單元格選擇的行為可能會有所不同,具體取決於關於正在使用的作業系統和 Swing 版本。
  • 使用自訂選擇模型時,請注意潛在的效能影響並確保它們適合您的申請的特定要求。

以上是如何在 JTable 中啟用非連續儲存格選擇?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn