Merhaba arkadaşlar DbUtlis kütüphanesi ile veritabanım dan verileri çekebiliyorum ve JTable aktarıyorum, JTable üzerinden insert,delete,update... işlemlerini gerçekleştirebiliyorum, bir sorunum var.

JTable'a veritabanının aynısını çekiyor ancak ben istediğim kolonların gelmesini istiyorum örneğin id kolonunu kullanıcının görmemesi lazım nasıl yapabilirim?

soruldu: 11 Tem '14, 08:19

HakanKav%C3%A7in's gravatar image

HakanKavçin
286182024
cevap kabul oranı: 37%

değiştirildi: 11 Tem '14, 22:46

rahmanyazgan's gravatar image

rahmanyazgan ♦
4.4k83559


TableColumnModel tcm = table.getColumnModel();
TableColumn column = table.getColumnModel().getColumn(columnIndex);
tcm.removeColumn(column);
permanent link

cevaplandı: 12 Tem '14, 02:34

SaRPaRDa's gravatar image

SaRPaRDa
5.0k213165
cevap kabul oranı: 27%

değiştirildi: 12 Tem '14, 02:36

Eski kod bunlar. Şu an deneyebileceğim bir ortam olmadığından doğrudan yapıştırdım.

(12 Tem '14, 02:36) SaRPaRDa SaRPaRDa's gravatar image

Aynı hatayı bu kod ile de aldım java.lang.ArrayIndexOutOfBoundsException: 0 >= 0

(12 Tem '14, 03:15) HakanKavçin HakanKav%C3%A7in's gravatar image

ArrayIndexOutOfBoundsException hatası muhtemelen kolon sayısının alınaması ile ilgilidir ve bunu ancak sen debug yaparak anlayabilirsin.

(12 Tem '14, 03:17) SaRPaRDa SaRPaRDa's gravatar image

Yaptım :) kodu yanlış yere yazıyormuşum teşekkürler

(12 Tem '14, 03:19) HakanKavçin HakanKav%C3%A7in's gravatar image

Abstract Table Model kullanarak Kendi modelini yazib istediyin kolonu istediyin yerede gostere bilirsin... Ornek olarak bir tane sinifimiz olsun Employee adinda ve id , name , salary kolonlari olsun :

public class Employee {

private int id;
private String name;
private String salary;

// Getter ve Setter metodlari

Sonra MyTableModel adinda bir class acalim (AbstractTableModel extends olunmalidir)

public class MyTableModel extends AbstractTableModel {

List<string> header = new ArrayList<>();   // Basliklar
    List<employee> data = new ArrayList<>();   // Veriler

public MyTableModel(List<string> header, List<employee> data) {
        this.header = header;
        this.data = data;
    }

@Override
    public int getRowCount() {
        return data.size();    // satir sayi verilerin sayi kadar olsun
    }

@Override
    public int getColumnCount() {
        return header.size();  // baslik sayi bura gondereceyimiz basliklarin sayi kadar olsun
    }

@Override
    public String getColumnName(int column) {
        return header.get(column); // kolonlarin adini gostermek icin
    }

@Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        if (columnIndex == 0) {           
            return data.get(rowIndex).getId();   // ilk kolonda ne gorunsun (ID)
        } else if (columnIndex == 1) {
            return data.get(rowIndex).getName();   // ikinci kolonda ne gorunsun (NAME)
        } else {
            return data.get(rowIndex).getSalary();   // ucuncu kolonda ne gorunsun (SALARY)
        }
    }

}
Ve son olarak da table-a modeli set etmen gerekir
        List<string> header = new ArrayList<>();  // basliklar
        header.add("ID");
        header.add("NAME");
        header.add("SALARY");

MyTableModel model = new MyTableModel(header, data);   // buradaki data veritabanindan gelen verilerin listi
        table.setModel(model);  // ve modeli jTable-a set ederek isi tamamladik

Simdi Burada ben butun kolonlari gosterdim amma sen diyorsan ki id gorunmesin o zaman tableModel-deki getValueAt metodunu deyisdirib asagidaki gibi yazman gerekir ...

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        if (columnIndex == 0) {           
            return data.get(rowIndex).getName();   // ilk kolonda ne gorunsun (NAME)
        } else {
            return data.get(rowIndex).getSalary();   // ikinci kolonda ne gorunsun (SALARY)
        } 
    }

modele set ederken de...

        List<string> header = new ArrayList<>();  // basliklar
        header.add("NAME");
        header.add("SALARY");

    MyTableModel model = new MyTableModel(header, data);
    table.setModel(model);
permanent link

cevaplandı: 11 Tem '14, 14:53

Sahil_H's gravatar image

Sahil_H
3.2k255461
cevap kabul oranı: 6%

Teşekkürler ancak bu yöntem çok uzun biz ondan dolayı dbutils kütüphanesini kullanıyoruz

(12 Tem '14, 02:19) HakanKavçin HakanKav%C3%A7in's gravatar image
-1

Merhaba,

Göstermek istemediğiniz kolonun minWidth ve maxWidth değerlerini sıfır yaparsan kolon gözükmeyecektir

table.getColumnModel().getColumn(columnIndex).setMinWidth(0);
table.getColumnModel().getColumn(columnIndex).setMaxWidth(0);
permanent link

cevaplandı: 11 Tem '14, 17:13

kurtomerfaruk's gravatar image

kurtomerfaruk
1.3k222940
cevap kabul oranı: 30%

Bu istediğimiz kod :) ancak şuan denedim

    java.lang.ArrayIndexOutOfBoundsException: 0 >= 0

hatası alıyorum nasıl çözerim

     table.getColumnModel().getColumn(2).setMinWidth(0);
     table.getColumnModel().getColumn(2).setMaxWidth(0);

kodun içerisindeki rakamları tamamen değiştiriyorum ancak hata yine sabit bir şekilde geliyor ve JTable'nin içerisi dolmuyor

(12 Tem '14, 02:20) HakanKavçin HakanKav%C3%A7in's gravatar image

Bu şekilde dener misiniz?

if (jTable1.getColumnModel().getColumnCount() > 0) { jTable1.getColumnModel().getColumn(2).setMinWidth(0); jTable1.getColumnModel().getColumn(2).setMaxWidth(0); }

(12 Tem '14, 17:31) kurtomerfaruk kurtomerfaruk's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,076
×12
×5
×2
×1

Soruldu: 11 Tem '14, 08:19

Görüntüleme: 913 kez

Son güncelleme: 12 Tem '14, 17:32

powered by BitNami OSQA