Swing Aktualisieren eines JPanel mit ArrayList im TableLayout

ysanne

Mitglied
Hallo,

bin noch ein relativer Java-Neuling und bräuchte ganz dringend Hilfe bei der Aktualisierung meines JPanels.

Der Dialog soll eine variable Anzahl von Zeilen enthalten, in welchen CheckBoxes und TextAreas enthalten sind. Jede Zeile hat den gleichen Aufbau.
Dies funktioniert ohne weiteres, indem ich für die CheckBoxes sowie die TextAreas jeweils ArrayLists generiert habe und die Objekte den ArrayLists nach dem Anlegen hinzufüge.
In das Layout werden dann die einzelnen Elemente der ArrayList ausgelesen. Hier ein kleiner Auszug:
Java:
textArea = new ArrayList<JTextArea>();
        checkBox = new ArrayList<JCheckBox>();
        // TableLayout definieren
        double rows[] = new double[17];
        int i;
        rows[0] = 5;
        for( i=1; i<=15;i++)
        {
            rows[i] = new Double(30);
        }
        rows[i] = 5;
        
        double border = 10;
        double size[][] =
            {{border, 0.40, border, 0.60, border},  // Columns
             rows}; // Rows

        setLayout (new TableLayout(size));
        iter = pools.iterator();
        i=0;
        while(iter.hasNext() ) 
        {  
            qp = (iter.next());
            cb = new JCheckBox(qp.getTitle());            
            cb.setName(qp.getTitle());
            cb.setBackground(Color.WHITE);
            cb.addItemListener(this);   //beobachtet wieviele Checkboxes ausgewählt sind
            checkBox.add(cb);
            add(checkBox.get(i),"1,"+(i+1)+",f,t"); //Ausrichtung horizontal full, vertikal top
            ta = new JTextArea(qp.getDescription());
            ta.setEditable(false);     //soll nur im Bearbeiten-Fenster bearbeitet werden können
            textArea.add(ta);
            add(textArea.get(i),"3,"+(i+1)+",f,c"); //Ausrichtung horizontal full, vertikal center            
            i++;
        }
    }
Nach dem Löschen einzelner Zeilen (über einen entsprechenden Button) möchte ich die Ansicht anpassen.
Ich würde dafür gern über die schon existierenden Objekte der ArrayLists zugreifen, um nicht nochmals alle Objekte neu zu erstellen. Wenn ich diese jedoch verwende, werden die Objekte immer am ursprünglichen Platz wieder angelegt, die gelöschte Zeile bleibt in der Ansicht leer obwohl ich alle Elemente mit removeAll() zunächst gelöscht habe.
Dass man Objekte nicht zweimal in einer Ansicht verwenden kann ist mir klar, kann man diese auch nicht an unterschiedlichen Zeilen im TableLayout darstellen? Die ArrayLists sind korrekt aufgebaut, sie enthalten keine leeren Felder. Das removeAll() funktioniert auch, allerdings ist der Aufbau trotz des richtigen Indexes fehlerhaft. Hier der Code für das Löschen und neu Zeichnen:
Java:
   public void qpDeleted(HashMap<?,Integer> selektiert)
    {
        this.removeAll();
        Iterator iterator = selektiert.entrySet().iterator();
        while(iterator.hasNext())
        {            
            Map.Entry e = (Map.Entry) iterator.next();
            int wert = (Integer) e.getValue();
            checkBox.remove(wert);
            textArea.remove(wert);
        }
        Iterator<JCheckBox> itercb = checkBox.iterator();
        int i=0;
        while(itercb.hasNext() ) 
        {  
            cb = itercb.next();
            add(cb,"1,"+(i+1)+",f,t"); //Ausrichtung horizontal full, vertikal top
            add(textArea.get(i),"3,"+(i+1)+",f,t"); 
            i++
        }
}

Hat jemand eine Idee, wie ich die gleichen Objekte beim Aktualisieren der Ansicht im TableLayout an eine andere Position als die Ursprüngliche setzen kann?

Vielen Dank!
 
Zuletzt bearbeitet:

ysanne

Mitglied
Hi,

bin bei was anderem zufällig noch über die Lösung gestolpert. Also für alle die es evtl. auch interessieren könnte, es muss lediglich die Anweisung tableLayout.deleteRow(index) sowie ein revalidate() angegeben werden:
Java:
    public void qpDeleted(HashMap<?,Integer> selektiert)
    {
        
        Iterator iterator = selektiert.entrySet().iterator();
        int wert=0;
        while(iterator.hasNext())
        {            
            Map.Entry e = (Map.Entry) iterator.next();
            wert = (Integer) e.getValue();
            checkBox.remove(wert);
            textArea.remove(wert);
        }
        tL.deleteRow(wert+1);
        revalidate();

Dadurch wird die Tabellenzeile gelöscht und die nachfolgenden werden automatisch mit beigezogen.
 

ysanne

Mitglied
Hi,

leider haben mehrere Tests ergeben, dass die Anweisung deleteRow() nicht den Inhalt der Zeile mitlöscht, sondern den ganzen Inhalt nur verschiebt. Das ist zunächst nicht zu sehen, deshalb leider meine obige Antwort (da sieht man den Neuling :( ).

Wenn jemand also eine Ahnung hat wie man Zeile und Inhalt im TableLayout sauber löscht oder die Objekte in eine andere Zeile verschiebt wäre ich für Hilfe sehr dankbar.

Gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Swing Aktualisieren eines JPanels nach Tasteneingabe AWT, Swing, JavaFX & SWT 2
A Swing Aktualisieren eines JPanels AWT, Swing, JavaFX & SWT 13
G Aktualisieren eines Thread? AWT, Swing, JavaFX & SWT 7
R Name eines Tabs aktualisieren AWT, Swing, JavaFX & SWT 2
K Aktualisieren eines JScrollPane AWT, Swing, JavaFX & SWT 2
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
T TableView aktualisieren AWT, Swing, JavaFX & SWT 1
W JavaFX TableView aktualisieren AWT, Swing, JavaFX & SWT 1
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J Swing JLabel Verknüpfung aktualisieren AWT, Swing, JavaFX & SWT 3
J JavaFX Label aktualisieren AWT, Swing, JavaFX & SWT 18
M Muss man die ObservableList aktualisieren? AWT, Swing, JavaFX & SWT 3
B Bounds aller Panels aktualisieren AWT, Swing, JavaFX & SWT 0
-DD Lobby/Spielerliste aktualisieren bei Suche AWT, Swing, JavaFX & SWT 1
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
M JavaFX Automatisches Aktualisieren der Seite AWT, Swing, JavaFX & SWT 26
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
H JavaFX - Label aktualisieren AWT, Swing, JavaFX & SWT 1
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
J JTextfield automatisch aus zweiter Klasse aktualisieren AWT, Swing, JavaFX & SWT 5
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
lumpigerAffe Swing Jframe aktualisieren AWT, Swing, JavaFX & SWT 27
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
C JavaFX TreeTableView aktualisieren AWT, Swing, JavaFX & SWT 10
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
thobren JavaFX textarea nach setPrefRowCount Ansicht aktualisieren AWT, Swing, JavaFX & SWT 1
Regedit JavaFX Java Canvas hört ständig auf zu aktualisieren/malen AWT, Swing, JavaFX & SWT 3
W Swing JLabel jede Sekunde aktualisieren, ohne Timer zu benutzen AWT, Swing, JavaFX & SWT 4
H Combobox aktualisieren AWT, Swing, JavaFX & SWT 2
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
L GUI - Jpanel - Splitpane will nicht aktualisieren AWT, Swing, JavaFX & SWT 4
2 Zeit Differenz automatisch aktualisieren AWT, Swing, JavaFX & SWT 1
N JavaFX Stage aktualisieren AWT, Swing, JavaFX & SWT 5
A JComboBox mit Array aktualisieren AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
O Statusleiste mit JLabel aktualisieren AWT, Swing, JavaFX & SWT 5
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
AssELAss Verzeichnis JFileChooser aktualisieren AWT, Swing, JavaFX & SWT 0
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
T Int-Wert aktualisieren? AWT, Swing, JavaFX & SWT 9
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
S Combobox aktualisieren AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
J GUI/Random aktualisieren? AWT, Swing, JavaFX & SWT 3
T JtextPane Zeile aktualisieren AWT, Swing, JavaFX & SWT 3
P Swing Aktualisieren von JFrame in einem onClick-Ereignis AWT, Swing, JavaFX & SWT 11
B JTable aktualisieren AWT, Swing, JavaFX & SWT 22
K SWT DataBinding, Anzahl der Zeilen aktualisieren AWT, Swing, JavaFX & SWT 4
G JRadioButton aktualisieren nicht... AWT, Swing, JavaFX & SWT 10
C ToolTip aktualisieren AWT, Swing, JavaFX & SWT 2
D Swing JComboBox aktualisieren AWT, Swing, JavaFX & SWT 4
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
J JList, Anzeige aktualisieren AWT, Swing, JavaFX & SWT 7
S Inhalt einer JComboBox aktualisieren AWT, Swing, JavaFX & SWT 6
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
A JButton in einem Array aktualisieren AWT, Swing, JavaFX & SWT 8
Kenan89 JTable aktualisieren AWT, Swing, JavaFX & SWT 21
B Swing Fensterinhalt aktualisieren AWT, Swing, JavaFX & SWT 11
S Spezielle komponente aktualisieren AWT, Swing, JavaFX & SWT 9
V Swing JProgressBar aktualisieren AWT, Swing, JavaFX & SWT 14
C Combobox bei Tabellenänderung mit aktualisieren AWT, Swing, JavaFX & SWT 11
C jTable aktualisieren AWT, Swing, JavaFX & SWT 2
M TabbpedPane Anzeige aktualisieren AWT, Swing, JavaFX & SWT 6
X Swing JTree aktualisieren AWT, Swing, JavaFX & SWT 2
P AWT Fenster aktualisieren, nachdem ich JComboBox ändere AWT, Swing, JavaFX & SWT 9
D JTree nach Klick auf einen Hyperlink aktualisieren AWT, Swing, JavaFX & SWT 3
D Elternfenster vom JDialog aktualisieren oder nicht ? AWT, Swing, JavaFX & SWT 7
O JFrame: Daten alle paar Sekunden aktualisieren AWT, Swing, JavaFX & SWT 3
M Swing JLabel (mit einer Grafik) aktualisieren AWT, Swing, JavaFX & SWT 2
S JTable - Aktualisieren / Neu zeichnen. AWT, Swing, JavaFX & SWT 5
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
M Zeichnung aktualisieren AWT, Swing, JavaFX & SWT 3
D Swing JTextField aus anderer Klasse aktualisieren AWT, Swing, JavaFX & SWT 2
L GUI aktualisieren? AWT, Swing, JavaFX & SWT 4
X Tabelle während Funktionsaufruf aktualisieren AWT, Swing, JavaFX & SWT 11
V Panel/Icon aktualisieren AWT, Swing, JavaFX & SWT 10
R JFreeChart aktualisieren wenn sich die Ausgangsdaten ändern AWT, Swing, JavaFX & SWT 8
M Swing Aktualisieren von laufenden Anwendungen AWT, Swing, JavaFX & SWT 10
C Swing Inhalt einer JTable aktualisieren und filten nach Feldern die nicht in der Tabelle sind AWT, Swing, JavaFX & SWT 3
S Swing Probleme beim Aktualisieren einer JComboBox nach Auswahländerung AWT, Swing, JavaFX & SWT 2
J JLabel aktualisieren AWT, Swing, JavaFX & SWT 8
N Swing MainWindow(JFrame) aktualisieren(neuzeichnen) repaint AWT, Swing, JavaFX & SWT 4
K Swing JTable Model aktualisieren AWT, Swing, JavaFX & SWT 2
K LayoutManager Borderlayout - NORTH aktualisieren AWT, Swing, JavaFX & SWT 10
C JMenuBar aktualisieren? AWT, Swing, JavaFX & SWT 2
K JTable aktualisieren AWT, Swing, JavaFX & SWT 9
M JFrame aktualisieren/refreshen? AWT, Swing, JavaFX & SWT 4
A Haupt JFrame inkl. aller Komponenten aktualisieren? AWT, Swing, JavaFX & SWT 3
L Swing Daten in JTable aktualisieren AWT, Swing, JavaFX & SWT 5
S Swing JTable nach einer Änderung einer Zelle komplett aktualisieren. AWT, Swing, JavaFX & SWT 10
D Swing JLabels in einer Schleife aktualisieren AWT, Swing, JavaFX & SWT 2
H UI aktualisieren AWT, Swing, JavaFX & SWT 9
R Tab-Inhalte aktualisieren AWT, Swing, JavaFX & SWT 4
B Swing JFreeCharts echtzeit Charts bzw Aktualisieren von Charts AWT, Swing, JavaFX & SWT 8
D JTree zur richtigen Zeit aktualisieren. AWT, Swing, JavaFX & SWT 3
S JTable aktualisieren AWT, Swing, JavaFX & SWT 4
U JTable in einem Tab aktualisieren aus anderem Tab heraus initiiert AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben