Hallo zusammen,
habe ein Problem mit meiner JTable und dem hinzufügen von neuen Werten..
Aufbau des Programms:
Ich habe eine Main, die sowohl ein workState und die GUI startet.
Die GUI ist in 2 Teile unterteilt. Eine Klasse, die ein Panel ist und die darauf liegende JTable enthält als auch ein Panel, dass die Config enthält.
Das Vorgehen:
Ich möchte aus meinen Textfeldern von der Config die Texte auslesen und sie dann anschließend an das workState übergeben. Anschließend packt die workState die Daten in eine LinkedList und zusätzlich in das Panel, wo die Table ist. Genau hier habe ich das Problem... die Daten werden in zwar in die Table geladen jedoch nicht angezeigt! Ich denke das liegt an der Referenzierung zwischen workState und dem Panel mit dem Table. Jedoch stehe ich komplett auf dem Schlauch wie ich die das vernünftig machen soll. Habe es mit repaint(), fireDataChanged() probiert, jedoch ohne erfolg.... Hat jemand eine Idee??
meine Table
und mein WorkState
habe ein Problem mit meiner JTable und dem hinzufügen von neuen Werten..
Aufbau des Programms:
Ich habe eine Main, die sowohl ein workState und die GUI startet.
Die GUI ist in 2 Teile unterteilt. Eine Klasse, die ein Panel ist und die darauf liegende JTable enthält als auch ein Panel, dass die Config enthält.
Das Vorgehen:
Ich möchte aus meinen Textfeldern von der Config die Texte auslesen und sie dann anschließend an das workState übergeben. Anschließend packt die workState die Daten in eine LinkedList und zusätzlich in das Panel, wo die Table ist. Genau hier habe ich das Problem... die Daten werden in zwar in die Table geladen jedoch nicht angezeigt! Ich denke das liegt an der Referenzierung zwischen workState und dem Panel mit dem Table. Jedoch stehe ich komplett auf dem Schlauch wie ich die das vernünftig machen soll. Habe es mit repaint(), fireDataChanged() probiert, jedoch ohne erfolg.... Hat jemand eine Idee??
meine Table
Java:
public class WorkTable extends JPanel {
/**
*
*/
private static final long serialVersionUID = 2053446323153016974L;
final String[] columnNames = {"Firma", "Datum", "Kosten"};
public DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
public JTable table = new JTable(tableModel);
public WorkTable(){
createGui();
}
private void createGui() {
JScrollPane pane = new JScrollPane(table);
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Unternehmen"));
setLayout(new BorderLayout());
tableModel.addTableModelListener(new TableModelListener(){
@Override
public void tableChanged(TableModelEvent arg0) {
// TODO Auto-generated method stub
System.out.println("Anzahl: " + table.getRowCount());
System.out.println("Anzahl der Element: " +Main.state.company.size());
}
});
add(pane, BorderLayout.CENTER);
// TODO Auto-generated method stub
}
public void addCompany(Unternehmen u){
tableModel.addRow(new Object []{u.name,u.date,u.cost});
}
}
und mein WorkState
Code:
public class WorkState {
public LinkedList <Unternehmen> company = new LinkedList();
public WorkTable workTable = new WorkTable();
JLabel label;
public WorkState(){
}
public void addCompany(Unternehmen neu, JLabel label) {
// TODO Auto-generated method stub
company.add(neu);
workTable.addCompany(neu);
setLable(label);
System.out.println(calCost());
}
public LinkedList<Unternehmen> getCompanyList(){
return company;
}
public String setString(){
String a = "0" ;
for (int i = 0; i < company.size(); i++){
a = a + " " + company.get(i).cost;
}
return a;
}
public int calCost(){
int all = 0;
for (int i = 0; i< company.size();i++){
try {
String cost = company.get(i).cost;
NumberFormat numberFormat = NumberFormat.getCurrencyInstance();
final Number parse = numberFormat.parse(cost);
all += parse.intValue();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return all;
}
// sets all costs for an output
// form 4 to 4,00€
//return String
public String getCost(){
String allCosts = "0";
NumberFormat numberFormat = NumberFormat.getCurrencyInstance();
allCosts = numberFormat.format(calCost());
return allCosts;
}
// sets a label text
public void setLable(JLabel label){
String cost = String.valueOf(calCost());
label.setText(cost);
}
//creates a format String for an good output
public String fromCompany(Unternehmen u){
String company = "";
company += u.name +" ";
if (company.length() > 25){
company = company.substring(0, 25);
}
String cost = "";
cost += u.cost +" ";
if (cost.length() > 25){
cost = cost.substring(0, 25);
}
String date = "";
date += u.date +" ";
if (date.length() > 25){
date = date.substring(0, 25);
}
return company + date + cost;
}
public void clear() {
// TODO Auto-generated method stub
company.clear();
workTable.removeAll();
}
}