Mam problem nie wyświetla mi nagłówka tabeli, ponad to chciał bym aby w okienku pokazała się pusta tabela z jednym pustym wierszem zanim użytkownik podaj jakieś parametry wyszukiwania jestem początkującym programistą więc proszę o wyrozumiałość i konstruktywne rady ;]
Może kilka słów o tym co poniżej:
- Najpierw tworze ramke w konstruktorze ta klasa jest wywołana przez naciśniecie przycisku w innej ramce.
- uzytkownik wprowadza dane do JTextField i wybiera 2 ComboBoxy
- Wartości przekazuje do funkcji findbutton()
- ta tworzy kryteria z tego co podał albo nie podal uzytkownik
- i zapisuje wszystko do Listy typu HibernateData(mój obiekt z danymi EmpID, EmpFirstName... itd)
- zaczynają się schody "ta" lista jest przekazana do modelutabeli i teoretycznie w konstruktorze powinienem napisac table.setModel(tb) i dodac do panelu niestety to mi nie wyswietla wynikow w tabeli dopiero jak wcisnę to do funkcji w której tworze listy to prawie działa.
- Mój model nie jest chyba poprawny bo nie wyświetla mi tytułów kolumn
- Dane ida do tabeli -table a ta niestety ale wyświetla się dopiero wtedy gdy rozciagnę trochę okienko mam nadzieję że wy mi pomożecie
package org.main.Hibernate;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Conjunction;
import org.hibernate.criterion.Restrictions;
public class ModData implements ActionListener{
//troche duzo tego wyszlo...
private List<HibernateData> lista= new LinkedList<HibernateData>();
private List<HibernateData> results = new LinkedList<HibernateData>();
private final String department[]= {" ","HR","Production","Logistic", "Ware House","Office"};
private final String work[] = {" ","true","false"};
private final JTextField fname = new JTextField(50);
private final JTextField lname = new JTextField(50);
private final JTextField tel = new JTextField(20);
private final JTextField age = new JTextField(2);
private final JTextField id = new JTextField(10);
private final JComboBox dep = new JComboBox(department);
private final JComboBox worker = new JComboBox(work);
private JButton mod = new JButton("Modyfikuj");
private JButton find = new JButton("Znajdz");
private JLabel labfname = new JLabel("First Name: ");
private JLabel labtel = new JLabel("Tel: ");
private JLabel labid = new JLabel("ID: ");
private JLabel lablname = new JLabel("Last Name: ");
private JLabel labdep = new JLabel("Department: ");
private JLabel labworker = new JLabel("Worker: ");
private JLabel labage = new JLabel("Age: ");
private final JTable table = new JTable();
private final JPanel mainpanel = new JPanel();
private JPanel panel1 = new JPanel();
private JPanel panel2 = new JPanel();
private final JPanel panel3 = new JPanel();
private TableModels tb =new TableModels();
private JScrollPane scrollpane = new JScrollPane(table);
public ModData(){
//layout dla paneli
mainpanel.setLayout(new FlowLayout());
panel1.setLayout(new GridLayout(14,1));
panel2.setLayout(new GridLayout(1,2));
panel3.setLayout(new FlowLayout());
//dodawanie paneli do glownego panelu
mainpanel.add(panel1);
mainpanel.add(panel2);
mainpanel.add(panel3);
panel1.add(labid);
panel1.add(id);
panel1.add(labfname);
panel1.add(fname);
panel1.add(lablname);
panel1.add(lname);
panel1.add(labtel);
panel1.add(tel);
panel1.add(labage);
panel1.add(age);
panel1.add(labdep);
panel1.add(dep);
panel1.add(labworker);
panel1.add(worker);
panel2.add(find);
panel2.add(mod);
find.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
findbutton(fname,lname,tel,age,dep,worker,id);
}
});
}
public void actionPerformed(ActionEvent event){
//tworzenie ramki
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("Hibernate Modyfi");
frame.setSize(600, 500);
//frame.setResizable(false);
frame.setVisible(true);
frame.add(mainpanel);
}
});
}
public void findbutton(JTextField fname, JTextField lname, JTextField tel,
JTextField age, JComboBox dep, JComboBox worker, JTextField id) {
String Fname = fname.getText();
String Lname = lname.getText();
//podobnie dla workera
String Worker = worker.getSelectedItem().toString();
//department
String Dep = dep.getSelectedItem().toString();
String Age = age.getText();
String Id = id.getText();
int ID = 0;
int Age1 = 0;
String Tel = tel.getText();
boolean bolworker = Worker.isEmpty();
boolean boldep = Dep.isEmpty();
//===========================================================
if(dep.getSelectedItem()==" ")
boldep = true;
if(worker.getSelectedItem()==" "){bolworker = true;}
else{bolworker = false;}
if(worker.getSelectedItem()=="true"){Worker = "1";}
if(worker.getSelectedItem()=="false"){Worker = "0";}
//============================================================
Session session = HibernateConfig.getSessionFactory().getCurrentSession();
session.beginTransaction();
//Criteria ===================================================
Criteria crit = session.createCriteria(HibernateData.class);
Conjunction con = Restrictions.conjunction();
if(Id.isEmpty()==false){
ID = Integer.parseInt(Id);
con.add(Restrictions.eq("EmpID",ID));
}
if(Fname.isEmpty()==false)
con.add(Restrictions.ilike("EmpFirstName",Fname));
if(Lname.isEmpty()==false)
con.add(Restrictions.ilike("EmpLastName",Lname));
if(Tel.isEmpty()==false)
con.add(Restrictions.ilike("EmpTel",Tel));
if(Age.isEmpty()==false){
Age1 = Integer.parseInt(Age);
con.add(Restrictions.eq("EmpAge",Age1));
}
if(bolworker==false)
con.add(Restrictions.eq("EmpWorker",Worker));
if(boldep==false)
con.add(Restrictions.eq("EmpDep",Dep));
crit.add(con);
//koniec criteria =====================================================
List<HibernateData> lista = crit.list();
for(HibernateData hData : lista){
HibernateData r = new HibernateData();
results.add(r);
}
tb.setData(lista);
table.setModel(tb);
table.repaint();
//table
panel3.add(table);
session.getTransaction().commit();
}
}
A to kod modelu tabeli:
package org.main.Hibernate;
import java.util.LinkedList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class TableModels extends AbstractTableModel{
private String[] colname= {"ID","First Name","Last Name","Telephone","Age","Worker","Department"};
private List<HibernateData> data= new LinkedList<HibernateData>();
public void setData(List<HibernateData> results){
this.data = results;
}
public String getColumnName(int col){
return colname[col].toString();
}
@Override
public int getColumnCount() {
return colname.length ;
}
@Override
public int getRowCount() {
return data.size();
}
public Object getValueAt(int row, int col) {
HibernateData r =(HibernateData) data.get(row);
switch(col){
case 0:
return r.getEmpID();
case 1:
return r.getEmpFirstName();
case 2:
return r.getEmpLastName();
case 3:
return r.getEmpTel();
case 4:
return r.getEmpAge();
case 5:
return r.getEmpWorker();
case 6:
return r.getEmpDep();
}
return null;
}
}
Mam nadzieję że jakaś dobra dusza pomoże rozwiązać problem...