HashMap mit JPanel

Status
Nicht offen für weitere Antworten.

TheHighlander

Mitglied
Hi.

Ich hab ein Problem und komm einfach net auf die Lösung.
Also, ich hab ne HashMap mit Vectoren. Diese Vetoren enthalten JTextFields und JLabels.

Das ganze sieht so aus ca....
Code:
   private HashMap createPanelForFrame(HashMap fields)
   {
       HashMap panels = new HashMap();   
       for (int i = 0; i < fields.size(); i++)
      {
         int x = 1, y = 2;
         int row = 1;
         boolean isAbreast = true;
         Vector temp = (Vector)fields.get(Integer.toString(i));
         if (temp != null)
         {
            JPanel panel = new JPanel(new TableLayout(size), true);
            panel.setName("Panel ID " + i);

               for (Iterator iter = temp.iterator(); iter.hasNext();)
               {
                  guiTextField element = (guiTextField)iter.next();
                  panel.add(element, x + "," + row + "," + y + "," + row);
                  row += 2;
               }
               x = 1;
               y = 1;
               
               //Und jetzt die Buttons 
               panel.add(nextElement, x++ + "," + row + "," + y++ + "," + row);
               panel.add(lastElement, x++ + "," + row + "," + y++ + "," + row);
               panel.add(firstElement, x++ + "," + row + "," + y++ + "," + row);
               panel.add(prevElement, x + "," + row + "," + y + "," + row);

               x = 1;
               y = 2;
               row++;
               panel.add(delElement, x++ + "," + row + "," + y++ + "," + row);
               panel.add(newElement, ++x + "," + row + "," + ++y + "," + row);
               panels.add(Integer.toString(i),panel);
            }
      }
   }

Das Problem ist jetzt, das nach dem ersten Durchlauf ein JPanel zwar in meiner HashMap drinnen ist, dies aber beim 2ten Durchlauf überschrieben wird. Nach dem 2ten Durchlauf funktioniert das ganze wieder.
Noch ein Problem ist, dass wenn ich mein JPanel dann in mein InternalFrame geb ich dich Buttons dann nicht sehe.
Weiß von euch jemand wo das Problem liegt?
 

Wildcard

Top Contributor
Mir ist nicht so ganz klar was du damit bezweckst! Wenn du genauer beschreibst was du eigentlich machen willst bekommst du sicher eine bessere Antwort.
Code:
panels.add(panel);
Was ist denn das? Eine HashMap arbeitet mit Key/Value-Pairs. Wie soll das funktionieren? Du solltest wohl eher eine ArrayList verwenden.
TheHighlander hat gesagt.:
Noch ein Problem ist, dass wenn ich mein JPanel dann in mein InternalFrame geb ich dich Buttons dann nicht sehe.
Wie gesagt, ich weiß nicht genau was du hier eigentlich machst, also einfach mal geraten:
Du fügst die gleichen Buttons in mehrere Panels ein? Ein Button kann aber nur in einem Panel gleichzeitig sein.
 

TheHighlander

Mitglied
Da gehört Key/Value hin hast du recht.


Wildcard hat gesagt.:
Wie gesagt, ich weiß nicht genau was du hier eigentlich machst, also einfach mal geraten:
Du fügst die gleichen Buttons in mehrere Panels ein? Ein Button kann aber nur in einem Panel gleichzeitig sein.

Danke für den Tipp....hilft mir sehr viel weiter.

Was ich machen will:
Ich will mir aus einer DB-Tabelle automatisch eine Eingabemaske generieren lassen.
 

TheHighlander

Mitglied
so...jetzt ist das mit den Buttons geklärt, hab sie in ne ToolBar gegeben.
Ein Problem hab ich aber noch.

ich adde mein Panel und meine Toolbar zum InternalFrame.
Schalt ich jetzt ein Panel weiter wird dies erst sichtbar wenn ich das InternalFrame verschiebe.

Code:
      JPanel panel = (JPanel)panels.get(elementId);
      this.getContentPane().removeAll();
      this.getContentPane().add(navigateTools,BorderLayout.NORTH);
      this.getContentPane().add(panel);
      panel.setVisible(true);
      panel.repaint();
      this.getContentPane().repaint();

Was mach ich falsch?
 

TheHighlander

Mitglied
Danke schön.

Hab noch ne Frage zu JLabels. Kann ein JLabel auch nur enmal vorkommen???
Code:
               for (Iterator iter = names.iterator(); iter.hasNext();)
               {
                  JLabel element = (JLabel)iter.next();
                  panel.add(element, x + "," + row + "," + y + "," + row);
                  row += 2;
               }

Ich erzeug mir also jedesmal ein neues JLabel.
Das Problem ist, das meine Labesl nur im letzen Panel drinnen sind das ich erzeuge. In den vorigen sind sie nicht drinnen.[/quote]
 

Wildcard

Top Contributor
Alle Components sind nur einmal vorhanden.
Um sie gleichzeitig in einem anderen Panel zu haben musst du sie clonen, oder neu erstellen
 

TheHighlander

Mitglied
ich mach ja eh

hier mal die ganze funktion

Code:
   private void createPanelForFrame(HashMap fields, Vector names)
   {
      for (int i = 0; i < fields.size(); i++)
      {
         int x = 1, y = 2;
         int row = 1;
         boolean isAbreast = true;
         Vector temp = (Vector)fields.get(Integer.toString(i));
         if (temp != null)
         {
            log.debug("-----------------ID---------------" + i);
            JPanel panel = new JPanel(new TableLayout(size), true);
            panel.setName("Panel ID " + i);
            if (temp.size() < 6)
            {
               for (Iterator iter = names.iterator(); iter.hasNext();)
               {
                  JLabel element = (JLabel)iter.next();
                  panel.add(element, x + "," + row + "," + y + "," + row);
                  row += 2;
               }

               x = 3;
               y = 4;
               row = 1;
               for (Iterator iter = temp.iterator(); iter.hasNext();)
               {
                  guiTextField element = (guiTextField)iter.next();
                  panel.add(element, x + "," + row + "," + y + "," + row);
                  row += 2;
               }
            }
            else
            {
               for (Iterator iter = names.iterator(); iter.hasNext();)
               {
                  JLabel element = (JLabel)iter.next();
                  panel.add(element, x + "," + row + "," + y + "," + row);
                  row += 2;
                  if (isAbreast)
                  {
                     row -= 2;
                     x = y + 5;
                     y = x + 1;
                     isAbreast = false;
                  }
                  else
                  {
                     x = 1;
                     y = 2;
                     isAbreast = true;
                  }
               }

               isAbreast = true;
               x = 4;
               y = 5;
               row = 1;
               for (Iterator iter = temp.iterator(); iter.hasNext();)
               {
                  guiTextField element = (guiTextField)iter.next();
                  panel.add(element, x + "," + row + "," + y + "," + row);
                  row += 2;
                  if (isAbreast)
                  {
                     row -= 2;
                     x = y + 5;
                     y = x + 1;
                     isAbreast = false;
                  }
                  else
                  {
                     x = 4;
                     y = 5;
                     isAbreast = true;
                  }
               }
            }
            panels.put(Integer.toString(i), panel);
            System.err.println(panel.getName());
         }
      }
   }

guiTextElement is ein ableitung von JTextField

ich erzeuge mir also für jedes Panel neue JLabels.
 

TheHighlander

Mitglied
is ne eigene classe

public class guiTextField extends JTextField implements FocusListener

die hat doch nichts mit dem JLabels zu tun
 

TheHighlander

Mitglied
was ist bitte ein foobar????

die Textfelder werden ja eh alle richtig angezeigt....
Nur die JLabels nicht, obwohl ich sie ja bei jedem Schleifendurchlauf neu erzeuge.
 

Wildcard

Top Contributor
foobar heißt setze hier was passendes ein :wink:
TheHighlander hat gesagt.:
Nur die JLabels nicht, obwohl ich sie ja bei jedem Schleifendurchlauf neu erzeuge.
Ich kann dazu nichts sagen, da ich ja nicht weiß was du in deiner Collection für Objekte hast.
Fakt ist, in der Schleife die du hier gepostest hast erzeugst du keine neuen Labels sondern holst sie aus der Collection.
Wenn das immer die gleichen sind kann es auch nicht funktionieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Hashmap in DefaultTableModel AWT, Swing, JavaFX & SWT 1
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
E JavaFX JavaFX - MenuItem erstellen aus dem Inhalt einer HashMap AWT, Swing, JavaFX & SWT 1
U JTable mit Daten aus einer HashMap füllen AWT, Swing, JavaFX & SWT 8
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
R JPanel überzeichnet alles? AWT, Swing, JavaFX & SWT 1
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
I JPanel - Verwaltung/ Anordnung AWT, Swing, JavaFX & SWT 4
T JComponents zur Laufzeit auf JPanel darstellen AWT, Swing, JavaFX & SWT 10
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
K Swing JPanel ueber komplette Form legen AWT, Swing, JavaFX & SWT 1
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
I (JPanel) paintComponent mit Zeitverschiebung (Sleep/Wait) AWT, Swing, JavaFX & SWT 1
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
S jpanel anchor bottom AWT, Swing, JavaFX & SWT 1
thobren Swing Im JPanel wird nur TextArea gelöscht AWT, Swing, JavaFX & SWT 13
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
G JPanel komponente Löschen AWT, Swing, JavaFX & SWT 7
F JPanel "verschmelzen" GridLayout AWT, Swing, JavaFX & SWT 10
B Dropdown "Einstellungen" auf JPanel, transparent AWT, Swing, JavaFX & SWT 1
D GlassPane für JPanel AWT, Swing, JavaFX & SWT 2
F JPanel "zeichnet" keinen Text AWT, Swing, JavaFX & SWT 14
T Swing Index für Komponente in JPanel? AWT, Swing, JavaFX & SWT 6
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
O 2D-Grafik Zeichenfläche auf JPanel AWT, Swing, JavaFX & SWT 4
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben