Я пишу приложение java swing, которое собирает данные из текстовых полей и сохраняет их в базе данных. У меня есть JmenuItem, который я хочу использовать для отображения данных в базе данных. У меня есть класс, который собирает данные из базы данных и вставляет данные в jtable. Класс расширяет jframe. Теперь проблема в том, что я выполняю этот класс из jmenuitem. Когда я нажимаю jmenuitem, он показывает пустой jframe без таблицы.JMenuItem отображает пустой Jframe при нажатии
вот код для класса с jtable. Класс Reports2
public class Reports2 extends JFrame {
Connection con = null;
Statement st;
ResultSet rs;
public static void main(String[]args) throws Exception {
try {
Connection con= null ;
Statement st;
ResultSet rs;
String url = "jdbc:mysql://localhost:3306/first";
String user = "root";
String password = "Admin123";
try{
con = DriverManager.getConnection(url,user,password);
st = con.createStatement();
String qry = "SELECT * FROM request";
rs = st.executeQuery(qry);
JTable table = new JTable(buildTableModel(rs));
JFrame frame = new JFrame("Reports");
frame.setSize(800, 700);
frame.add(table);
frame.setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(Reports2.class.getName()).log(Level.SEVERE, null, ex);
}
}catch(Exception e){
}}
public static DefaultTableModel buildTableModel(ResultSet rs) throws Exception{
ResultSetMetaData metaData = rs.getMetaData();
Vector<String> columnNames = new Vector <String>();
int columnCount = metaData.getColumnCount();
for(int column = 1; column<=columnCount;column++){
columnNames.add(metaData.getColumnName(column));
}
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
while(rs.next()){
Vector<Object> vector = new Vector<Object>();
for(int columnIndex =1;columnIndex<= columnCount;columnIndex++){
vector.add(rs.getObject(columnIndex));
}
data.add(vector);
}
return new DefaultTableModel(data, columnNames);
}
}
Вот код JMenuItem. Имя переменной Jmenuitem - get_reports.
private void get_reportActionPerformed(java.awt.event.ActionEvent evt) {
Reports2 report = new Reports2();
report.setSize(800, 700);
report.setVisible(true);
Я сделал, как вы просили, и это сработало! – Tundaey