Strona 1 z 2
JTable
Napisane: środa, 6 kwietnia 2011, 22:15
przez kompozyt
Witam !
Mam taki mały kawałek kodu który bardzo ładnie działa,
ale jak to w życiu bywa nie zawsze jest z górki.
Do rzeczy - nie wiem jak włączyć automatyczne sortowanie kolumn po ich naciśnięciu.
Tak jak ma to miejsce gdy ustawimy:
jTable1.setAutoCreateRowSorter(true);
oto kod, proszę o pomoc i Pozdrawiam
Code: Zaznacz cały
try {
Statement st=(Statement) c.createStatement();
ResultSet rs=st.executeQuery("SELECT id, imie, nazwisko, wiek FROM tabelauser");
Vector<Vector> wiersz = new Vector<Vector>();
while (rs.next()) {
String pid=rs.getString("id");
String pim=(rs.getString("imie"));
String pna=(rs.getString("nazwisko"));
String pwi=(rs.getString("wiek"));
Vector<String> elementy = new Vector<String>();
elementy.removeAllElements();
elementy.addElement(pid);
elementy.addElement(pim);
elementy.addElement(pna);
elementy.addElement(pwi);
wiersz.add(elementy);
} rs.close();
JTable tabelka = new JTable(wiersz,columnNames);
jScrollPane1.setViewportView(tabelka);
tabelka.setVisible(true);
jTable1.setColumnModel((TableColumnModel) columnNames);
jTable1.setModel((TableModel) wiersz);
}
Re: JTable
Napisane: piątek, 8 kwietnia 2011, 11:01
przez kompozyt
Witam ponownie !
Przyszło mi na myśl że może komuś się przyda cała treść procedury której kawałek wcześniej umieściłem.
Zajęło mi to trochę czasu zanim to napisałem, więc może zaoszczędzę komuś choć odrobinę czasu
====================================================================================
Code: Zaznacz cały
private void listuj()
{
Vector<String> columnNames = new Vector<String>();
columnNames.addElement("ID");
columnNames.addElement("Imie");
columnNames.addElement("Nazwisko");
columnNames.addElement("Wiek");
Connection c = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost:3306/test";
c=(Connection) DriverManager.getConnection(url,"user","haslo");
System.out.println("Udało się połączyć z bazą danych...");}
catch (ClassNotFoundException e) { System.out.println("Problem z driverem bazy danych"); }
catch (SQLException e) { System.out.println("Nie można połączyć się z baza danych"); }
catch (Exception e) { System.out.println("Błąd przy połączeniu z bazą danych"); }
try {
Statement st=(Statement) c.createStatement();
ResultSet rs=st.executeQuery("SELECT id, imie, nazwisko, wiek FROM tabelauser");
Vector<Vector> wiersz = new Vector<Vector>();
while (rs.next()) {
String pid=rs.getString("id");
String pim=rs.getString("imie");
String pna=rs.getString("nazwisko");
String pwi=rs.getString("wiek");
Vector<String> elementy = new Vector<String>();
elementy.removeAllElements();
elementy.addElement(pid);
elementy.addElement(pim);
elementy.addElement(pna);
elementy.addElement(pwi);
wiersz.add(elementy);
} rs.close();
JTable tabelka = new JTable(wiersz,columnNames);
JFrame frame =new JFrame(); //======================
JScrollPane scrollPane = new JScrollPane(tabelka);
tabelka.getColumnModel().getColumn(0).setMaxWidth(50);
tabelka.getColumnModel().getColumn(1).setMaxWidth(100);
tabelka.getColumnModel().getColumn(2).setMaxWidth(100);
tabelka.getColumnModel().getColumn(3).setMaxWidth(50);
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setBounds(100, 100, 800, 90+(ile*16));
frame.setVisible(true); //==========================
}
catch (Exception e) {System.out.println("Błąd przy pobieraniu danych"); }
if (c != null) { try { c.close(); System.out.println("Połączenie z bazą danych zamknięte"); }
catch (Exception e) { System.out.println("Błąd przy zamykaniu bazy danych");
}}}
====================================================================================
Tak na marginesie polecam bardzo fajny i darmowy program do operowania na bazach MySql.
----------------------
SQLyog Community Edition
http://www.sciagnij.pl/programy/p/Windo ... -SQLyog/33
----------------------
(wiem ze nie odkrywam w tej chwili świata ale może się przydać, miłej zabawy)
POZDRAWIAM
KURSY SĄ OK.!
Re: JTable
Napisane: piątek, 8 kwietnia 2011, 23:39
przez Lenson
Wydaje mi się , że w całym tym programowaniu , nie chodzi o to żeby kopiować kod od kogoś , według mnie , i to co ja robię to raczej nie kopiuje kodu nie wiadomej treści od kogoś z zewnątrz bo to troche się wtedy mija z celem "programisty" ^^ Ale dzieki , może komus sie przyda ;p
Re: JTable
Napisane: sobota, 9 kwietnia 2011, 08:38
przez kompozyt
Na świecie istnieją różne potrzeby i różne zawody, weźmy takiego malarza
(oczywiście można by wybrać jakikolwiek inny zawód – wszystkie je szanuję)
ma do wykonania różnego typu zadania, weźmy dwa skrajne przypadki.
Malarz nr1 ma do pomalowania 15 pokoi biurowych i korytarz je łączący.
Malarz nr2 (artysta mówi o sobie) ma do pomalowania płótno 1x2 metra na którym ma odzwierciedlić piękno zachodzącego słońca.
==================================
Na czym polega różnica w pracy tych malarzy ?
==================================
Nr1 to facet który przez tydzień musi się wyrobić z robotą zgodnie z umową, do tego celu wykorzystuje najnowsze zdobycze techniki malarskiej, różnego rodzaju chwyty i triki oraz cały swój bagaż doświadczeń. Dzięki temu codziennie przez cały ten tydzień po godzinach pracy będzie do dyspozycji dla swoich dzieci i żony.
Nr2 i teraz UWAGA! to ten sam facet co Nr1 tylko że siedzący w sobotę na działce przed swoim płótnem całkowicie pochłonięty swojej pasji, godzinami wpatruje się w tan kawałek nieba nad drzewami bez końca miesza farby wyciskane z tubek i to jest piękne.
Do czego to porównanie ? chyba nie muszę pisać wszyscy to rozumieją.
Na koniec dodam tylko że pisząc to - wróciłem pamięcią do roku 1990 kiedy to po raz pierwszy miałem od szefa zadanie napisania programu mając do dyspozycji PC-XT Dos cipper + dBase.
Napisałem ten program, zajęło mi to 4 miesiące (wszystkim zainteresowanym wydawało się bardzo szybko) bazowałem tylko na manualu clippera i dbase’a, nie było wtedy Internetu, ani książek na ten temat. Nie było myszki przy komputerze !!!
Dziś się z tego

– dziś taki program bym WYKLIKAŁ jednego dnia i to w godzinach pracy.
Programowanie to moja pasja. POZDRAWIAM
Re: JTable
Napisane: sobota, 9 kwietnia 2011, 09:11
przez Morfidon
Dokładnie zawsze mówiłem, że programistów dzieli się na klepaczy i twórców, ciekaw porównanie
kompozyt 
Re: JTable
Napisane: sobota, 9 kwietnia 2011, 13:34
przez Lenson
Fajne porównanie ^^

Ciesze się że nie tylko ja jestem taki szurnięty na tym pkt ^^
Hibernate - ArrayList - JTable
Napisane: piątek, 13 maja 2011, 10:57
przez kompozyt
Witam !
Mam mały problem.
W linijce
JTable tabelkax = new JTable(wiersz,kolumna);
mam błąd.
Czy możecie mi podpowiedzieć co robię źle ?
Gdy to samo napiszę z <Vector> zamiast ArrayList to działa.
Chyba czegoś nie rozumiem.
Code: Zaznacz cały
private void tablicaarray(){
ArrayList<String> kolumna = new ArrayList<String>();
kolumna.clear();
kolumna.add("ID");
kolumna.add("Imie");
kolumna.add("Nazwisko");
kolumna.add("Wiek");
String zap = "From Tabelauser ORDER BY id ASC";
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
List<Tabelauser> baza2 = (List<Tabelauser>)s.createQuery(zap).list();
ArrayList<ArrayList<String>> wiersz = new ArrayList<ArrayList<String>>();
wiersz.clear();
for (Tabelauser p : baza2) {
String pid = (""+p.getId());
String pim = (p.getImie());
String pna = (p.getNazwisko());
String pwi = (""+p.getWiek());
ArrayList<String> elementy = new ArrayList<String>();
elementy.clear();
elementy.add(pid);
elementy.add(pim);
elementy.add(pna);
elementy.add(pwi);
wiersz.add(elementy);
}
s.getTransaction().commit();
JTable tabelkax = new JTable(wiersz,kolumna);
jScrollPane1.setViewportView(tabelkax);
tabelkax.setVisible(true);
}
Pozdrawiam
Re: JTable
Napisane: piątek, 13 maja 2011, 11:33
przez Morfidon
Jaki jest to błąd? Wypisz go.
Re: JTable
Napisane: piątek, 13 maja 2011, 17:22
przez kompozyt
cannot find symbol
symbol: constructor JTable(java.util.ArrayList<java.util.ArrayList<java.lang.String>>,java.util.ArrayList<java.lang.String>)
location: class javax.swing.JTable
Re: JTable
Napisane: piątek, 13 maja 2011, 18:03
przez kompozyt
tak na marginesie doczytałem się w internecie i nie tylko bo sam NetBeans sam zwraca na to uwagę że:
cytuję
"nie używaj klasy Vector - to relikt przeszłości.
Zamiast tego używaj interfejsu List oraz klas go implementujących,
jak np. ArrayList."