Arkadaşlar iki gündür uğraşıyorum. Bu jtable kullanımı ne kadar zormuş yerli yabancı kaynaklara bakıyorum. O kadar model, listener,render var ki kafam çorba oldu ama tek yapmaya çalıştığım JTable da Checkbox'a tıklayınca hemen yanındaki kolondaki yazan bilgileri almak. Kaynaklar hem inglizce hem çok karışık. Nasıl yapabilirim?

private void init() {
    String[] columnNames = {"Column 1", "Column 2"};  
    DefaultTableModel model = new DefaultTableModel(columnNames, 0){
        @Override
        public Class<?> getColumnClass(int columnIndex) {
            return columnIndex == 0 ? Boolean.class : super.getColumnClass(columnIndex);
        }
    };

    JTable table=new JTable(model );  
    table.getModel().addTableModelListener(new TableModelListener() {

        @Override
        public void tableChanged(TableModelEvent e) {
            //galiba burda birşeyler yapmak lazım

        }
    });

    for (int i =0;i<5;i++) {
        Object[]  rows = {Boolean.FALSE, i};  
        model.addRow( rows );
    }

    add(new JScrollPane(table));

soruldu: 19 Oca '15, 11:04

D%C4%B0GREV07's gravatar image

DİGREV07
161101012
cevap kabul oranı: 0%

değiştirildi: 19 Oca '15, 14:43

rahmanyazgan's gravatar image

rahmanyazgan ♦
4.4k83559


İstediğiniz şeyi yapan kodu yazmak da algoritmanız kadar basit aslında. Tabloya tıklandığında ilgili bileşenin true/false değerini kontrol edip yan kolondaki veriyi almak.

JCheckBox bileşenlerine tıklama olayı olacaksa iş uzar tabi. Basit düşünmekte fayda var :)

// Tabloya tıklama olayını oluşturuyoruz.
table.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent evt) {
        tableMouseClicked(evt);
    }
});

private void tableMouseClicked(MouseEvent evt) {
    int selectedRow = table.getSelectedRow();
    int selectedColumn = table.getSelectedColumn();

    // İlgili satır/sütundaki değere ulaşıyoruz.
    Object selectedObject = table.getValueAt(selectedRow, selectedColumn);

    // Hem true olup olmadığıı hem de NullPointerException almamak için değerin null olmadığını kontrol ediyoruz.
    if (selectedObject != null && selectedObject.equals(Boolean.TRUE)) {
        String str = (String) table.getValueAt(selectedRow, selectedColumn + 1);
        System.out.println(str);
    }
}
permanent link

cevaplandı: 19 Oca '15, 14:32

rahmanyazgan's gravatar image

rahmanyazgan ♦
4.4k83559
cevap kabul oranı: 26%

değiştirildi: 19 Oca '15, 14:38

2

@rahmanyazgan hocam, BooleanUtils.isTrue(selectedObject) ile her iki kontrol yapılabilir :) küçük bir iyileştirme.. apache common kütüphanesi olmazsa olmaz bir dependency.

(19 Oca '15, 16:35) Turgay Can Turgay%20Can's gravatar image

@J2EE hocam, kısaltma için teşekkürler. :)

(19 Oca '15, 18:30) rahmanyazgan ♦ rahmanyazgan'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,077
×12
×1

Soruldu: 19 Oca '15, 11:04

Görüntüleme: 475 kez

Son güncelleme: 19 Oca '15, 18:30

powered by BitNami OSQA