Я просто новичок в Java, и я был бы рад, если бы вы могли мне помочь, у меня здесь JTable, который заполняется с помощью JButton с данными из базы данных. У меня есть 3 стола с именем Студенты, преподаватели, & директора. Все работает отлично, просматривая эти поля в JTable, используя 3 JButtons (по одному для каждой таблицы). Но каждый раз, когда я нажимал на другой JButton, JTable не очищался, а вместо этого добавлял данные к существующей информации на JTable.Заполните JTable с помощью JComboBox вместо JButton
Теперь, я хочу, чтобы заменить 3 JButtons на JComboBox, где параметры для выбора - это имена таблиц и отображение их содержимого в JTable. Я действительно не знаю, как это сделать. Надеюсь, вы сможете помочь мне с этим и по достоинству оцените любые входы.
Thanks
Ниже приведены коды, которые я использовал. Я также включил некоторые подписи.
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;
public class tests extends javax.swing.JFrame {
/**
* Creates new form tests
*/
public tests() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
dataTable = new javax.swing.JTable();
students = new javax.swing.JButton();
teachers = new javax.swing.JButton();
directors = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
dataTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"ID", "Name", "Surname", "Age"
}
));
jScrollPane1.setViewportView(dataTable);
students.setText("Students");
students.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
studentsActionPerformed(evt);
}
});
teachers.setText("Teachers");
teachers.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
teachersActionPerformed(evt);
}
});
directors.setText("Directors");
directors.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
directorsActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(students)
.addGap(57, 57, 57)
.addComponent(teachers)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 66, Short.MAX_VALUE)
.addComponent(directors)
.addGap(40, 40, 40))
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(students)
.addComponent(teachers)
.addComponent(directors))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 274, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void studentsActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model = (DefaultTableModel) dataTable.getModel();
String sql = "select * from students";
try {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(tests.class.getName()).log(Level.SEVERE, null, ex);
}
Connection connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/datavisibility","root","");
Statement statmnt = connect.createStatement();
ResultSet rslt = statmnt.executeQuery(sql);
while(rslt.next()){
String id = rslt.getString("ID");
String name = rslt.getString("Name");
String surname = rslt.getString("Surname");
String age = rslt.getString("Age");
model.addRow(new Object[]{id,name,surname,age});
}
} catch(SQLException e){
e.printStackTrace();
}
}
private void teachersActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model = (DefaultTableModel) dataTable.getModel();
String sql = "select * from teachers";
try {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(tests.class.getName()).log(Level.SEVERE, null, ex);
}
Connection connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/datavisibility","root","");
Statement statmnt = connect.createStatement();
ResultSet rslt = statmnt.executeQuery(sql);
while(rslt.next()){
String id = rslt.getString("ID");
String name = rslt.getString("Name");
String surname = rslt.getString("Surname");
String age = rslt.getString("Age");
model.addRow(new Object[]{id,name,surname,age});
}
} catch(SQLException e){
e.printStackTrace();
}
}
private void directorsActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model = (DefaultTableModel) dataTable.getModel();
String sql = "select * from directors";
try {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(tests.class.getName()).log(Level.SEVERE, null, ex);
}
Connection connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/datavisibility","root","");
Statement statmnt = connect.createStatement();
ResultSet rslt = statmnt.executeQuery(sql);
while(rslt.next()){
String id = rslt.getString("ID");
String name = rslt.getString("Name");
String surname = rslt.getString("Surname");
String age = rslt.getString("Age");
model.addRow(new Object[]{id,name,surname,age});
}
} catch(SQLException e){
e.printStackTrace();
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/*
* Set the Nimbus look and feel
*/
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/*
* If Nimbus (introduced in Java SE 6) is not available, stay with the
* default look and feel. For details see
* http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(tests.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(tests.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(tests.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(tests.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/*
* Create and display the form
*/
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new tests().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTable dataTable;
private javax.swing.JButton directors;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton students;
private javax.swing.JButton teachers;
// End of variables declaration
}
См подрисуночной here.
Спасибо заранее.
'Но каждый раз, когда я нажимал на другой JButton, th e JTable не очищается, а вместо этого добавляет данные в существующую информацию о JTable.' - это не должно вас удивлять, поскольку программа выполняет только то, что вы говорите. ActionListener вашей кнопки только добавляет строки в таблицу. Я уверен, что вы можете понять, что для замены данных сначала нужно удалить старые данные или заменить модель на новую, не так ли? API DefaultTableModel имеет методы, которые вы можете использовать для этого. –
Кроме того, я не вижу вашего кода для вашей попытки сделать то, что вы хотите, с помощью JComboBox. Если вы забыли опубликовать код, отредактируйте свой вопрос и опубликуйте его, иначе мы не будем знать, что вы делаете неправильно. –
@HovercraftFullOfEels: Сэр, пожалуйста, советую, я полностью потерял это. Я просто новичок в Java, поэтому, пожалуйста, помогите мне. Спасибо! – Karl