Hi Leutz.
Ich habe eine Frage die eigentlich Java Basic ist.
Trotzdem bekomme ich es irgendwie nicht wirklich hin.
Ich möchte eine MyTable Klasse schreiben mit der ich eine Instanz einer JTable erzeugen kann und dann auch genau mit dieser weiter arbeiten kann.
Ich habe KEINE Frage zur Tabelle ansich.. Das funktioniert alles einwandfrei.
Hier mal ein Beispiel wie ich es bis jetzt mache.
Leider bekomme ich immer wieder Probleme da ich diese Klasse mehrmals gebrauche und ich glaube da wird immer wieder was überschrieben(obwohl ich ja eine neue Instanz erstelle)
Bspl. aufruf
und hier die Klasse mit einer JTabel die auf einem JPanel/JScrollPane liegt
Hat evtl. jemand ein Beispiel wie ich so eine Klasse aufbauen könnte.
Ich hoffe es lacht jetzt keiner^^ Aber irgendwie bekomme ich das nicht so hin wie ich das will, und ich habe es schon auf soviel verschiedene arten probiert.
Es müssen auch keine Daten oder sonst was gefüllt werden, oder sonstwas mit der Tabelle gemacht werden.
Einfach ein Beispiel wie man eine eigene Tabellen-Klasse erstellt und diese addet.
Denn ich bekomm immer grössere Probleme so wie ich es z.Z. mache
schon mal thx an alle die Paar Tipps und/oder bisschen Quellcode für mich haben
gruss
MScalli
Ich habe eine Frage die eigentlich Java Basic ist.
Trotzdem bekomme ich es irgendwie nicht wirklich hin.
Ich möchte eine MyTable Klasse schreiben mit der ich eine Instanz einer JTable erzeugen kann und dann auch genau mit dieser weiter arbeiten kann.
Ich habe KEINE Frage zur Tabelle ansich.. Das funktioniert alles einwandfrei.
Hier mal ein Beispiel wie ich es bis jetzt mache.
Leider bekomme ich immer wieder Probleme da ich diese Klasse mehrmals gebrauche und ich glaube da wird immer wieder was überschrieben(obwohl ich ja eine neue Instanz erstelle)
Bspl. aufruf
Code:
// Aufruf Panel mit Tabelle Kunden-Adressen
String tmp_sql_string = "SELECT adr_lfd_num, adr_zeile1, adr_zeile2, adr_zeile3, adr_zeile4, adr_zeile5, adr_zeile6, adr_zeile7 FROM f_adr WHERE " +
"adr_nr = '" + str_key + "' " +
"AND adr_kz = 'K'";
int[] arr_length = {50, 290, 290, 290, 290, 290, 290, 290};
String[] arr_col_names = {"Lfd. Nr.", "adr_zeile1", "adr_zeile2", "adr_zeile3", "adr_zeile4", "adr_zeile5", "adr_zeile6", "adr_zeile7"};
PanWithTable_Auftrag_Adr pwt = new PanWithTable_Auftrag_Adr("pack.V0100", "fillTextFieldsAAnschrift", tmp_sql_string, arr_col_names, arr_length, 970, 140, true);
pan_table_adressen.add(pwt);
pan_table_adressen.repaint();
und hier die Klasse mit einer JTabel die auf einem JPanel/JScrollPane liegt
Code:
import java.awt.Color;
import java.awt.Dimension;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import pack.DBHandler;
/**
* Diese Klasse erzeugt eine JTable auf einem JPanel.<br>
* Ausserdem kann Sie eine Methode der Übergebenden Klasse aufrufen<br>
*
*/
public class PanWithTable_Auftrag_Adr extends JPanel{
private static final long serialVersionUID = -768633293737339371L;
static JTable table;
static DefaultTableModel model;
private static String str_key1 = "";
@SuppressWarnings("unchecked")
public PanWithTable_Auftrag_Adr( final String str_classname,
final String str_method,
String _sql_string,
final String[] _arr_column_names,
int[] _arr_length_columns,
final int _width,
final int _height,
final boolean _chooseable){
Vector columnNames = new Vector();
Vector data = new Vector();
this.setSize(_width, _height);
try
{
Connection con = DBHandler.getConnection();
// Read data from a table
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery( _sql_string );
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
// Get column names
for (int i = 1; i <= columns; i++){
columnNames.addElement( _arr_column_names[i-1] );
}
// Get row data
while (rs.next()){
Vector row = new Vector(columns);
for (int i = 1; i <= columns; i++){
row.addElement( rs.getObject(i) );
}
data.addElement( row );
}
rs.close();
stmt.close();
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Exception: Klasse PanWithTable_Auftrag_Adr \nFehler beim Lesen der Datenbank");
System.out.println( e );
}
// TableModel Sortierung geht von alleine!!
model = new DefaultTableModel(data, columnNames) {
private static final long serialVersionUID = -7946186467395546994L;
public boolean isCellEditable(int row, int col) {
return false;
}
};
table = new JTable(model);
table.setSelectionBackground(new Color(255,255,0));
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
table.setRowSorter(sorter);
table.getTableHeader().setReorderingAllowed(false);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
initColumn(table, _arr_length_columns);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(_width,_height - 5));
add(scrollPane);
table.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
if(_chooseable == true){
if ( e.getClickCount() == 2 ) {
System.out.println("Doppelklick");
str_key1 = table.getValueAt(table.getSelectedRow(), 0).toString();
// Aufruf der Übergebenen Klasse/Methode
Class c;
try {
c = Class.forName(str_classname);
Object object = c.newInstance();
Method method = object.getClass().getMethod(str_method, new Class[] {});
method.invoke(object, new Object [] {});
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
});
}
private void initColumn(final JTable table, int[] _width_array) {
TableColumn column = null;
for (int i = 0; i < _width_array.length; i++) {
column = table.getColumnModel().getColumn(i);
column.setPreferredWidth(_width_array[i]);
}
}
public static String getKey1(){
return str_key1;
}
public static JTable getTable(){
return table;
}
public static DefaultTableModel getModel(){
return model;
}
}
Hat evtl. jemand ein Beispiel wie ich so eine Klasse aufbauen könnte.
Ich hoffe es lacht jetzt keiner^^ Aber irgendwie bekomme ich das nicht so hin wie ich das will, und ich habe es schon auf soviel verschiedene arten probiert.
Es müssen auch keine Daten oder sonst was gefüllt werden, oder sonstwas mit der Tabelle gemacht werden.
Einfach ein Beispiel wie man eine eigene Tabellen-Klasse erstellt und diese addet.
Denn ich bekomm immer grössere Probleme so wie ich es z.Z. mache
schon mal thx an alle die Paar Tipps und/oder bisschen Quellcode für mich haben
gruss
MScalli