允許使用者在 JTable 中選擇單一非連續單元格提供了更大的靈活性和用戶便利性。實現此目的的方法如下:
如果您想啟用非連續單元格選擇而不記住最後選定的單元格,只需按住CTRL 鍵,同時單擊所需的儲存格即可。此方法允許輕鬆直接地選擇單元格,而無需修改預設的 JTable 行為。
或者,您可以實作支援非連續儲存格選擇的自訂 ListSelectionModel。當您需要對選擇過程進行特定控制時,例如維護最後選擇的儲存格或實作自訂選擇規則,這是必要的。
以下程式碼示範如何使用自訂ListSelectionModel 在JTable:
import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; public class NonContinuousSelectionModel extends DefaultListSelectionModel { @Override public boolean isSelectedIndexSelected(int index) { boolean selected = super.isSelectedIndexSelected(index); if (selected) { return true; } int minIndex = getMinSelectionIndex(); int maxIndex = getMaxSelectionIndex(); if (minIndex == -1) { return false; } if (index < minIndex || index > maxIndex) { return false; } for (int i = minIndex; i <= maxIndex; i++) { if (i == index) { continue; } if (super.isSelectedIndexSelected(i)) { return false; } } return true; } }
要使用此ListSelectionModel,您可以使用setSelectionModel將其設定為JTable方法:
JTable table = new JTable(data, columnNames); table.setSelectionModel(new NonContinuousSelectionModel());
此方法允許對單元格選擇過程進行更好的自訂和控制,從而實現預設JTable行為可能不支援的複雜選擇場景。
以上是如何在JTable中實現非連續單元格選擇?的詳細內容。更多資訊請關注PHP中文網其他相關文章!