मेरे पास JTable
है और तालिका के खाली हिस्से में क्लिक करके सभी पंक्तियों को अचयनित करने की अनुमति देना चाहते हैं। यह अब तक ठीक काम करता है। हालांकि, भले ही मैं table.clearSelection();
फोन तालिका अभी भी पता चलता पहले सक्षम सेल के चारों ओर एक सीमा (उदाहरण में सेल देखें):जेटीबल: पंक्ति चयन को साफ़ करते समय सेल के चारों ओर सीमा हटाएं
मैं भी इस सीमा से छुटकारा पाने के लिए करना चाहते हैं (यह विशेष रूप से मैक के मूल रूप और महसूस पर जगह से बाहर दिखता है, जहां कोशिकाएं अचानक काला हो जाती हैं)।
पूरी तरह से काम कर रहे कम से कम उदाहरण कोड:
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);
}
}
[संपादित करें] table.getColumnModel().getSelectionModel().clearSelection();
जो यहाँ उल्लेख किया गया था जोड़ने की कोशिश की। लेकिन यह या तो मदद नहीं करता है।
धन्यवाद! सरल और प्रभावी! – qqilihq
@qqilihq, यह मानता है कि तालिका में सभी डेटा एक ही रेंडरर का उपयोग करता है। अधिक सामान्य समाधान के लिए, चयन को समाशोधन के अतिरिक्त, आपको चयन मॉडल के एंकर/लीड इंडेक्स को रीसेट करना होगा। फिर आपको कस्टम रेंडरर की आवश्यकता नहीं है। – camickr
@camickr: इसके लिए धन्यवाद। 1+ आपके उत्तर –