2016-03-21 18 views
1

Öğrenci ve öğretmen verilerini eklemek için bir program yapıyorum. i öğrenci veya öğretmen için masaya verileri göstermek tarafından radyo düğmesini i radyo düğmesine tablo değişiklik seçerseniz yapmak istiyorumRadyo düğmesi, tablo verisini nasıl değiştirir

public void paneling(){ 
    panell = new JPanel(new BorderLayout()); 
    DefaultTableModel model = new DefaultTableModel(); 
     JTable table = new JTable(); //make the table 
     table.setModel(model); 
     table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); 
     table.setFillsViewportHeight(true); 
     JScrollPane scroll = new JScrollPane(table); 
     try{ 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection conn = DriverManager.getConnection(url, username, password); 

     }catch(Exception e){ 
      JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); 
     } 
    panell.add(scroll,BorderLayout.CENTER); 
    panel4 = new JPanel(); 
    panel4.setLayout(new FlowLayout()); 
    rb_siswa = new JRadioButton("Siswa"); 
    rb_dosen = new JRadioButton("Dosen"); 
    ButtonGroup bg = new ButtonGroup(); 
    bg.add(rb_siswa); 
    bg.add(rb_dosen); 
    rb_siswa.setSelected(true); //i set RadioButton siswa default 
    panel4.add(rb_siswa); 
    panel4.add(rb_dosen); 
    panell.add(panel4,BorderLayout.NORTH); 
    if(rb_siswa.isSelected()){ //the first if 
     String[] columnNames= {"NIM", "ID_Jurusan", "ID_Kelas", "Name", "Tanggal_Lahir", "Gender", "Semester", "Alamat", "email", "nohp"}; 
     model.setColumnIdentifiers(columnNames); 
     try{ 
     sql = "select * from siswa"; 
      PreparedStatement ps = conn.prepareStatement(sql); 
      ResultSet rs = ps.executeQuery(); 
      while(rs.next()){ 
       NIM = rs.getString("NIM"); 
       IDJurusan = rs.getString("id_jurusan"); 
       IDKelas = rs.getString("id_kelas"); 
       Name = rs.getString("Nama"); 
       TL = rs.getString("TanggalLahir"); 
       gender = rs.getString("JenisKelamin"); 
       Semester = rs.getString("Semester"); 
       alamat = rs.getString("Alamat"); 
       email = rs.getString("e-mail"); 
       nohp = rs.getString("nohp"); 
       model.addRow(new Object[]{NIM, IDJurusan, IDKelas, Name, TL, gender, Semester, alamat, email, nohp}); 
      } 
     }catch(Exception aae){ 
      JOptionPane.showMessageDialog(null, aae.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); 
     } 
    } 
    else if(rb_dosen.isSelected()){ // the second if 
     String[] columnNames= {"ID_Dosen", "Name", "Gender", "Alamat", "email", "nohp"}; 
     model.setColumnIdentifiers(columnNames); 
     try{ 
      sql = "select * from siswa"; 
      PreparedStatement ps = conn.prepareStatement(sql); 
      ResultSet rs = ps.executeQuery(); 
      while(rs.next()){ 
       IDDosen = rs.getString("IDDosen"); 
       Name = rs.getString("Nama"); 
       gender = rs.getString("JenisKelamin"); 
       alamat = rs.getString("Alamat"); 
       email = rs.getString("email"); 
       nohp = rs.getString("nohp"); 
       model.addRow(new Object[]{IDDosen, Name, gender, alamat, email, nohp}); 
      } 
     }catch(Exception aae){ 
    } 
    } 

seçmek istiyor. bir düğme yapmam gerek?

this is how the table looks like, hope can help you imagine

+0

denedin için 'table.revalidate()' veya '' modeline değişiklik yaptıktan sonra table.repaint() ' JTable'. Ayrıca, aynı model nesnesini değiştirmenin, görüş değerlerindeki değişikliği garanti etmediğini unutmayın. Bunun yerine, yeni bir 'DefaultTableModel' nesnesi oluşturun veya kullanmadan önce boş bırakın. Bu link size yardımcı olabilir. http://stackoverflow.com/a/30117380/1540330 –

+0

@VighaneshGursale zaten, ve –

cevap

0

Ben salıncak hakkında bir ton bilmiyorum ama size radyo düğmeleri için dinleyici eklemeniz gerekir gibi görünüyor (Okulda iken son kullandı).

kavram burada açıklanmıştır:

ChangeListener changeListener = new ChangeListener() { 
    public void stateChanged(ChangeEvent changEvent) { 
    AbstractButton aButton = (AbstractButton)changEvent.getSource(); 
    ButtonModel aModel = aButton.getModel(); 
    // Code to change table here 
    } 
}; 

Ardından değişiklik dinleyici almak ve bu tür gibi düğmeler eklemek olacaktır: http://www.java2s.com/Tutorial/Java/0240__Swing/ListeningtoJRadioButtonEventswithaChangeListener.htm

Temelde böyle böyle bir değişiklik dinleyici oluşturmak isteyeyim:

rb_siswa.addChangeListener(changeListener); 
rb_dosen.addChangeListener(changeListener); 

Bu muhtemelen işe yaramalıdır. Görünüşe göre, bir dinleyiciyi doğrudan ButtonGroup'a ekleyemezsiniz, düğmelerini değil. Bu benim ilk düşüncemdi. Seçimin ButtonModel'ını geri dönebilirsiniz (eğer doğru okuyorsam) ancak ButtonGroup'un kendi dinleyici konsepti yoktur.

Buraya bakın: https://docs.oracle.com/javase/7/docs/api/javax/swing/ButtonGroup.html

umarım bu yardımcı olur!

Ilgili bir şeye dokunduğumdan beri uzun yıllar geçtiği için yanlış bir şey bulursam lütfen bana bildirin!

+0

işe yaramıyor, bu yüzden eğer if, kodumun actionperformed edilmesine ihtiyacım var? ve benim model yöntemimi herkese açık mı? –

0

Radyo düğmelerine ItemListener ekleyebilirsiniz. Sadece iki radyo düğmeleri varsa o zaman herhangi Enumerator sadece doğrudan böyle bir şey kullanmak kaçının:

JRadioButton radio1 = new JRadioButton("Hello"); 
JRadioButton radio2 = new JRadioButton("World"); 

ButtonGroup btnGroup = new ButtonGroup(); 

// add listeners to button 
radio1.addActionListener(this); 
radio2.addActionListener(this); 

// add buttons to button group 
btnGroup.add(radio1); 
btnGroup.add(radio2); 

. 
. 
. 
// and implement the itemStateChanged() method as follows: 
public void itemStateChanged(ItemEvent e){ 

     if(radio1.isSelected()) 
     { 
      // create the default table model and then populate it to jtable and put the jtable into scroll bar (for student) 
     } 
     else { 
      // same as above (for teacher). 
     } 

} 
+0

aynı, çalışmaz ve ben radiobutton'un çalıştığından emin olmak için her ikisine de System.out.print eklemeyi denedim ama –

+0

yapmazsınız Güncellenmiş kodu ne yazdığınızı sorununuzu anlayabilmemiz için lütfen hangi değişiklikleri yaptığınızı söyleyebilir misiniz? bakan. Ayrıca, düğme grubundaki bileşeni eklemeden önce dinleyici ekleyip eklemediğinizi kontrol edin. –