Hi,
ich bin kein Profi mit Swing muss allerdings einen GUI mit einer JTable bauen.
Dabei bin auf einiger Probleme gestoßen, die mich langsam in den Wahnsinn treiben.
Ich verwende ein Scrollpand und darin soll die Table angezeigt werden. Das funktioniert auch soweit, allerdings wird die Tabelle und ihr Inhalt erst angzeigt wenn draufklickt.
Dann werden die Spaltenüberschriften nicht angezeigt obwohl sie im Model definiert sind.
In den Tabellenzeilen hab ich je Zeile 2 Buttons eingefügt, allerdings schaffe ich es nicht, dass von diesen ActionEvents ausgehen und ein neues Fenster geöffnet wird.
Anbei poste ich etwas von meinem Code:
Freu mich über jede Hilfe. Danke
Gruß Schwester
ich bin kein Profi mit Swing muss allerdings einen GUI mit einer JTable bauen.
Dabei bin auf einiger Probleme gestoßen, die mich langsam in den Wahnsinn treiben.

Ich verwende ein Scrollpand und darin soll die Table angezeigt werden. Das funktioniert auch soweit, allerdings wird die Tabelle und ihr Inhalt erst angzeigt wenn draufklickt.
Dann werden die Spaltenüberschriften nicht angezeigt obwohl sie im Model definiert sind.
In den Tabellenzeilen hab ich je Zeile 2 Buttons eingefügt, allerdings schaffe ich es nicht, dass von diesen ActionEvents ausgehen und ein neues Fenster geöffnet wird.
Anbei poste ich etwas von meinem Code:
Code:
class MyTableModel extends AbstractTableModel {
private String[] columnNames = { "Tag", "von", "bis", "Pause",
"Kat a", "Kat b", "Kat c", "Kat d",
"Kat e", "Urlaub", "Überstd", "Freigabe" };
private Object[][] data;// = generateTableData(getTimesheet());
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public void setValueAt(Object value, int row, int col) {
data[row][col]=value;
}
}
DefaultTableModel tabModel = new DefaultTableModel(generateTableData(getTimesheet()), colNames);
//tabModel.setRowCount(12);
class Editor extends JButton implements TableCellEditor{
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
if(column ==12){
setText("Reise");
if(isSelected==true){
new OpenErfassungReiseAL();
}
}
if(column ==13){
setText( "Detail" );
}
return this;
}
public void addCellEditorListener(CellEditorListener l) {
}
public void cancelCellEditing() {
}
public Object getCellEditorValue() {
return getText();
}
public boolean isCellEditable(EventObject anEvent) {
return true;
}
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
public boolean stopCellEditing() {
return true;
}
public void removeCellEditorListener(CellEditorListener l) {
}
}
class Renderer extends JButton implements TableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if(column ==12){
setText("Reise");
}
if(column ==13){
setText( "Detail" );
}
return this;
}
}
tab = new JTable(new DefaultTableModel(generateTableData(getTimesheet()), colNames) {
public Class getColumnClass(int columnIndex) {
Class c = String.class;
switch(columnIndex){
case 12 : c =JButton.class;
case 13 : c= JButton.class;
}
return c;
//return columnIndex == 2 ? JButton.class : String.class;
}
});
tab.setDefaultEditor(JButton.class, new Editor());
tab.setDefaultRenderer(JButton.class, new Renderer());
tab.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumnModel tcm =tab.getColumnModel();
tcm.getColumn(0).setPreferredWidth(100);
tcm.getColumn(0).setHeaderValue("Tag");
tcm.getColumn(1).setPreferredWidth(100);
tcm.getColumn(2).setPreferredWidth(100);
tcm.getColumn(3).setPreferredWidth(50);
tcm.getColumn(4).setPreferredWidth(50);
tcm.getColumn(5).setPreferredWidth(50);
tcm.getColumn(6).setPreferredWidth(50);
tcm.getColumn(7).setPreferredWidth(50);
tcm.getColumn(8).setPreferredWidth(50);
tcm.getColumn(9).setPreferredWidth(50);
tcm.getColumn(10).setPreferredWidth(50);
tcm.getColumn(11).setPreferredWidth(30);
tcm.getColumn(12).setPreferredWidth(100);
tcm.getColumn(13).setPreferredWidth(100);
tab.setBounds(0, 10, 719, 235);
tab.setVisible(true);
tab.setPreferredSize(new java.awt.Dimension(699, 235));
tab.getTableHeader().setPreferredSize(new java.awt.Dimension(715, 19));
sp_tab = new JScrollPane();
sp_tab.setViewportView(tab);
sp_tab.add(tab);
sp_tab.setBounds(12, 149, 719, 300);
panel1.add(sp_tab);
sp_tab.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panel1.add(getL_auszahlung());
panel1.add(getTf_auszahlung());
protected Object [][]generateTableData(JCO.Table timesheet){
Object [][] data = new Object[timesheet.getNumRows()][14];
for (int i = 0; i<timesheet.getNumRows(); i++){
JButton reise = new JButton();
JButton detail = new JButton();
reise.addActionListener(new OpenErfassungReiseAL());
detail.addActionListener(new OpenErfassungStdAL());
timesheet.setRow(i);
//tab.setValueAt(timesheet.getDate("TAG"), i, 0);
//tab.setValueAt(timesheet.getDate("VON"), i, 1);
data[i][0] = timesheet.getDate("TAG");
data[i][1] = timesheet.getTime("VON");
data[i][2]= timesheet.getTime("BIS");
data[i][3] = timesheet.getDouble("PAUSE");
data[i][4] = timesheet.getDouble("ERSCHWERNIS_KAT_A");
data[i][5] = timesheet.getDouble("ERSCHWERNIS_KAT_B");
data[i][6] = timesheet.getDouble("ERSCHWERNIS_KAT_C");
data[i][7] = timesheet.getDouble("ERSCHWERNIS_KAT_D");
data[i][8] = timesheet.getDouble("ERSCHWERNIS_KAT_E");
data[i][9] = timesheet.getString("URLAUB");
data[i][10]= timesheet.getString("UEBERSTUNDEN");
data[i][11]= timesheet.getString("STATUS");
data[i][12]= reise;
data[i][13]= detail;
}
return data;
}
Freu mich über jede Hilfe. Danke
Gruß Schwester