JTable
var ve tablonun boş bir bölümüne tıklayarak tüm satırların seçiminin kaldırılmasına izin vermek istiyorum. Bu çok iyi çalışıyor.JTable: Satır sırasını temizlerken hücre çevresindeki kenarlığı kaldırın
Ben de bu sınırın kurtulmak istiyorum (: Ancak, ben table.clearSelection();
çağrı rağmen tablo hala daha önceden etkinleştirilmiş hücrenin etrafında bir sınır (örneğin hücreyi bakınız) gösterir Özellikle Mac'in doğal görünüm ve hislerinde, hücrelerin aniden siyahlaştığı yer dışında görünüyor.
Tam çalışan asgari örnek kod:
public class JTableDeselect extends JFrame {
public JTableDeselect() {
Object rowData[][] = { { "1", "2", "3" }, { "4", "5", "6" } };
Object columnNames[] = { "One", "Two", "Three" };
JTable table = new JTable(rowData, columnNames);
table.setFillsViewportHeight(true);
table.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if (table.rowAtPoint(e.getPoint()) == -1) {
table.clearSelection();
}
}
});
add(new JScrollPane(table));
setSize(300, 150);
}
public static void main(String args[]) throws Exception {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
new JTableDeselect().setVisible(true);
}
}
[değiştir] buralarda bahsedildi table.getColumnModel().getSelectionModel().clearSelection();
eklemek için çalıştı. Ama bu da işe yaramıyor.
Teşekkürler! Basit ve etkili! – qqilihq
@qqilihq, bu tablodaki tüm verilerin aynı oluşturucuyu kullandığını varsayar. Daha genel bir çözüm için, seçimi temizlemenin yanı sıra, seçim modelinin çapa/kurşun indekslerini de sıfırlamanız gerekir. O zaman özel bir oluşturucuya ihtiyacınız yoktur. – camickr
@camickr: Bunun için teşekkürler. Cevabınız 1+ + –