2010-07-02 17 views
19

Özel hücre oluşturucu üzerinde elimden geliyorum ve hücrenin kenarlığını kaldırmak istiyorum.
Bunu nasıl yapabilirim? SetBorder'i denedim ama işe yaramıyor. Sadece bileşenler setBorder() yöntemi olmayan bir Border ve Bileşen sınıfı olabilir Salıncak beri kodu derler bilmiyorumBir kenarlıktaki hücre sınırını kaldır

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; 
    } 
} 

cevap

48

hücreler arasında çizilen çizgiler hücrelerin kendileri bir parçası değildir: Varsayılan oluşturucusunu geçersiz zaman

ben gibi bir şey kullanın. Tablo tarafından çizilirler.

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

Veya, birlikte çizgilerin rengini değiştirebilir:

table.setShowGrid(false); 

sadece yatay ya da sadece dikey çizgiler devre dışı bırakmak için: ile tüm tablo bunları kapatabilirsiniz

table.setGridColor(color) 
+0

setShowXX() benim için çalıştı teşekkürler. – harshit

+1

Her ikisini de aynı anda [setShowGrid()] ile yapabilirsiniz (http://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html#setShowGrid (boolean)) –

+0

@WimDeblauwe Teşekkür ederim, bir tane kaçırdım. Bir –

2

:

İşte benim Oluşturucu kodudur.

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

BoşBorder dışındaki tüm Kenarlık türlerini ayarlayabiliyorum. – harshit

+2

Ve bir BoşBorder'i kullanırken ne görmeyi beklersiniz? Onun çalışmadığını nereden biliyorsun? Benim için iyi çalışıyor, metin varsayılan Kenarlık nedeniyle 1 piksel tarafından girintilenmek yerine sol kenara karşı. – camickr

+0

çok güzel, teşekkürler +1 – mKorbel