2010-07-02 23 views
19

में कक्ष सीमा को हटाएं मेरे पास कस्टम सेल रेंडरर है और सेल की सीमा को हटाना चाहता हूं।
मैं इसे कैसे कर सकता हूं? मैंने सेटबॉर्डर की कोशिश की लेकिन यह काम नहीं करता है।एक jtable

public class MyTableCellRenderer extends DefaultTableCellRenderer { 

    private static final long serialVersionUID = -1195682136616306875L; 

    public Component getTableCellRendererComponent(JTable table, Object value, 
      boolean isSelected, boolean hasFocus, int row, int column) { 
     Component c = super.getTableCellRendererComponent(table, value, 
       isSelected, hasFocus, row, column); 
     if (!isSelected) { 
      if (row % 2 == 0 && row != 1) { 
       c.setBackground(new Color(255, 255, 150)); 
      } else { 
       c.setBackground(Color.WHITE); 
      } 
     } else { 
      c.setBackground(new Color(255, 230, 255)); 
     } 
     c.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); 
     return c; 
    } 
} 

उत्तर

48

लाइनों कोशिकाओं के बीच तैयार की कोशिकाओं स्वयं का हिस्सा नहीं हैं:

जब मैं डिफ़ॉल्ट रेंडरर ओवरराइड मैं की तरह कुछ का उपयोग करें। वे मेज से खींचे जाते हैं।

table.setShowHorizontalLines(false); 
table.setShowVerticalLines(false); 

या, आप के साथ लाइनों का रंग बदल सकते:

table.setShowGrid(false); 

सिर्फ क्षैतिज या बस खड़ी लाइनों को अक्षम करने के: आप उन लोगों के साथ पूरे तालिका के लिए बंद कर सकते हैं

table.setGridColor(color) 
+0

setShowXX() ने मेरे लिए धन्यवाद धन्यवाद। – harshit

+1

आप दोनों [setShowGrid()] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html#setShowGrid (बूलियन) के साथ-साथ दोनों ही कर सकते हैं) साथ ही साथ –

+0

@WimDeblauwe धन्यवाद, मुझे याद आया कि एक –

2

मैं कैसे अपने कोड संकलित के बाद से ही स्विंग घटकों एक सीमा और घटक वर्ग एक setBorder() विधि नहीं है हो सकता है पता नहीं है:

यहाँ मेरी रेंडरर कोड है।

Class CustomRenderer extends DefaultTableCellRenderer 
{ 
    public Component getTableCellRendererComponent(
     JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
    { 
     super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
     this.setBorder (BorderFactory.createBevelBorder (EtchedBorder.RAISED)); 
     return this; 
    } 
} 
+0

मैं खाली सीमा को छोड़कर सभी प्रकार की सीमाओं को सेट करने में सक्षम हूं। – harshit

+2

और जब आप एम्प्टीबॉर्डर का उपयोग करते हैं तो आप क्या देखने की उम्मीद करते हैं? आप कैसे जानते हैं कि यह काम नहीं कर रहा है। यह मेरे लिए ठीक काम करता है, डिफ़ॉल्ट सीमा के कारण टेक्स्ट 1 पिक्सेल द्वारा इंडेंट किए जाने के बजाए बाएं किनारे के खिलाफ है। – camickr

+0

बहुत अच्छा, धन्यवाद +1 – mKorbel