H
HilfmirBitte
Gast
Hallo,
ich poste mal direkt ein kurzes lauffähiges beispielprogramm:
Hier Abgeleite DefaultTableModel Klasse
Es geht mir darum das ich ein Fortschrittbalken ( Progressbar ) in einem JTable haben möchte, soweit klappt es auch.
Nur ich sitze ne weile daran und weiß nicht mehr weiter wie ich eine Zeile hinzufügen könnte.
Wäre euch dankbar für hilfreiche Tipps.
Mfg
ich poste mal direkt ein kurzes lauffähiges beispielprogramm:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class TableBeispiel{
TableModel model;
JFrame frame;
JTable table;
public static void main( String[] args ){
new TableBeispiel();
}
public TableBeispiel() {
initFrame();
}
public void initFrame(){
model = new TableModel();
model.setColumnCount(2);
model.setRowCount(1);
table = new JTable( model );
frame = new JFrame( "Beispiel" );
frame.getContentPane().add( new JScrollPane( table ),BorderLayout.NORTH);
JButton button = new JButton("DRÜCK");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new ThreadClass(model, table).start();
}
});
frame.add(button,BorderLayout.SOUTH);
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
}
class ThreadClass extends Thread{
TableModel model;
JTable table;
public ThreadClass(TableModel model,JTable table) {
this.model = model;
this.table = table;
}
@Override
public void run() {
setze();
}
public void setze(){
int zahl = 0;
while(zahl < 200){
try{
zahl++;
model.setValueAt(new Fortschritt(zahl), 0, 1);
table.repaint();
Thread.sleep(300);
}catch(InterruptedException e){}
}
}
}
class Fortschritt implements Icon{
public int wert;
public Fortschritt(int wert) {
this.wert = wert;
}
public int getIconHeight() {
return 0;
}
public int getIconWidth() {
return 0;
}
public void paintIcon(Component c, Graphics g, int x, int y) {
g.setColor( Color.GREEN );
g.fillRect( 0, 0, wert, 20 );
g.setColor( Color.BLACK );
g.drawString(wert+"", 100, 10);
}
}
Hier Abgeleite DefaultTableModel Klasse
Java:
class TableModel extends DefaultTableModel{
public Object[] objects;
private Class[] classes;
public String[] name;
public int columnCount;
public int rowCount;
public ArrayList<Object> liste = new ArrayList<Object>();
public TableModel(){
objects = new Object[]{
Float.valueOf( 0.12f ),
new Fortschritt(50)
};
classes = new Class[]{
Float.class ,
Icon.class
};
name = new String[]{
"Titel","Fortschritt"
};
}
public void setColumnCount(int wert){
columnCount = wert;
}
public int getColumnCount() {
return columnCount;
}
public void setRowCount(int wert){
rowCount = wert;
}
public int getRowCount() {
return rowCount;
}
public String getColumnName(int column) {
return name[column];
}
public Object getValueAt(int rowIndex, int columnIndex) {
return objects[ columnIndex ];
}
public Class getColumnClass(int columnIndex) {
return classes[columnIndex];
}
public void setValueAt(Object variable, int rowIndex, int columnIndex) {
objects[columnIndex] = variable;
}
}
// Dieser Abschnitt war eine Überlegung, Funktioniert nur nicht
public void addRow(Object a){
for( Object sa : objects){
liste.add(sa);
}
objects = new Object[liste.size()+1];
for(int i = 0; i < liste.size()+1 ; i++ ){
if(liste.size() == i){
objects[i]= a;
}else{
objects[i] = liste.get(i);
}
}
setRowCount(liste.size());
liste.clear();
}
Es geht mir darum das ich ein Fortschrittbalken ( Progressbar ) in einem JTable haben möchte, soweit klappt es auch.
Nur ich sitze ne weile daran und weiß nicht mehr weiter wie ich eine Zeile hinzufügen könnte.
Wäre euch dankbar für hilfreiche Tipps.
Mfg
Zuletzt bearbeitet von einem Moderator: