2016-03-21 4 views
1

私は生徒と教師のデータを追加するプログラムを作っています。ラジオボタンを選択して生徒や教師用のテーブルにデータを表示したいラジオボタンの作り方テーブルのデータを変更する

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){ 
    } 
    } 

私はラジオボタンを選択してテーブルを変更したいと思っています。私はボタンを作る必要がありますか?

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

+0

をあなたが(table.revalidate 'しようとしています)や' 'table.repaint()' 'のモデルに変更を加えた後JTable'。また、同じモデルオブジェクトを変更しても、ビューの値の変更は保証されません。代わりに、新しい 'DefaultTableModel'オブジェクトを作成するか、それを空にしてから使用してください。このリンクはあなたを助けるかもしれません。 http://stackoverflow.com/a/30117380/1540330 –

+0

@VighaneshGursale既に、そのdoesntの仕事 –

答えて

0

私はスイングについてトンを知らないが、あなたがあなたのラジオボタンにリスナーを追加する必要があるようです(私は学校にいたとき、最後にそれを使用)。

概念がここで説明されています。http://www.java2s.com/Tutorial/Java/0240__Swing/ListeningtoJRadioButtonEventswithaChangeListener.htm

を基本的にあなたは、このようなように変更リスナーを作成したいと思う:

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

あなたは、あなたの変更リスナーを取ると、そのようなようなあなたのボタンにそれを追加します。

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

これはおそらく動作するはずです。ボタンではなく、ButtonGroupにリスナーを直接追加することはできないようです。それが私の最初の考えでした。選択のButtonModelを返すことができます(私がその権利を読んでいる場合)が、ButtonGroupはそれ自身のリスナーコンセプトを持っていません。

はこちらをご覧ください:https://docs.oracle.com/javase/7/docs/api/javax/swing/ButtonGroup.html

私はこれが役に立てば幸い!

スイング関連のものに何度も触れてから何年も間違っていたことをお知らせください。

+0

私はactionperformedに私のifコードを入れる必要がありますか?私のモデル方法を一般に公開しますか? –

0

ItemListenerをラジオボタンに追加できます。あなたが唯一の2つのラジオボタンを持っている場合は、任意のEnumeratorだけで直接このようなものを使用を避ける:

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

同じこと、うまく動作せず、ラジオボタンが動作していることを確認するためにSystem.out.printを追加しようとしました。 –

+0

あなたの問題を理解できるように、変更内容を投稿してください向いている。また、ボタングループにコンポーネントを追加する前にリスナーを追加したかどうかを確認します。 –

関連する問題