# Wie bestimmte Obj. einer ContentPane abfragen und vergl?



## FenchelT (1. Jun 2007)

Hallo zusammen,

ich haette da nochmal eine Frage.

Ich habe eine einfache Form mit zwei JLabeln (lblName, lblOrt) und einer Textbox (txtName) auf der ContentPane

Nun habe ich in meiner DB eine Tabelle config aus der ich Textbezeichnug fuer die Label auslese.

Select objname, objvalue
From config
usw


Wie durchlaufe ich nun alle Objekte vom Typ JLabel auf meiner ContentPane um den Namen der Objekte mit dem objNamen aus meinem ResultSet zu vergleichen, um dynamisch den Wert (Text) des JLabels zu setzen?


Vielen Dank fuer eure Unterstuetzung.


Viele Gruesse
FenchelT


----------



## André Uhres (1. Jun 2007)

So könntest den JLabel Objekten jeweils ihren Namen setzen:

```
obj1.setName("obj1");
```
Und so könntest du dann alle JLabel Objekte durchlaufen:

```
private void scanLabels(Container contentpane, String objNamen, String objValue) {
        Component[] comps = contentpane.getComponents();
        for (int i = 0; i < comps.length; i++) {
            if(comps[i] instanceof JLabel){
                JLabel label = (JLabel) comps[i];
                if(label.getName().equalsIgnoreCase(objNamen)){
                    label.setText(objValue);
                    break;
                }
            }
        }
    }
```


----------



## FenchelT (1. Jun 2007)

Hallo Andre,

merci und allerherzlichsten Dank   

So hatte ich mir das vorgestellt *freu*


----------



## gastFlo (24. Jul 2007)

hmm hab ähnliches problem und zwar will ich alle componets auf dem panel7 die ein JTextfield sind in ein String[] reinstecken

hab da aber meine Probleme:



```
Component[] comps = panel7.getComponents(); 
String[] fields;
    	    	
for (int i = 0; i < comps.length; i++) 
{
    if(comps[i] instanceof JTextField)
    { 
        JTextField txt = (JTextField) comps[i]; 
         System.out.println(txt.getName());
    }
}
```

Die Ausgabe liefert mir immer nur NULL deswegen hab ich gleich gar nicht versucht es in ein String[] zu bekommen.

Hab irngedwie auch ein Problem das ich nicht weis wie groß ich das String[] machen soll weil wenn ich es so groß mach wie das comps [] hab ich ja das Problem das wenn ein JLabel oder ein JButton vorkommt der Platz nachher leer ist.

freu mich über jede hilfe danke

lg flo[/code]


----------



## André Uhres (24. Jul 2007)

Statt ein Array, könntest du eine List für fields nehmen (wenn's sein muss, dann kannst du sie später mit toArray leicht in ein Array verwandeln). Den Namen des JTextField musst du natürlich zuerst setzen: textfeld.setName(..) :wink:


----------



## GastFLo (24. Jul 2007)

mit der Liste für Fields bin ich komplt ausgestiegen hmm

warum muss ich den namen zuerst setzten die textfelder haben scho alle einen Namen 

ich mein ich erstell ja das Textfeld mit

private JTextField txtOriginSystemID;

und ich hab mir halt erhofft das er mit dan wenn ich ihn mit getName anspreche das er mir den Namen txtOriginSystemID zurückgibt hmm

danke für deine schnelle antwort.. steh gerade komplet an

und alles nur weil ich immer eine unterschiedliche anzahl von textfeldern hab von denen ich die werte auslesen muss


----------



## FenchelT (24. Jul 2007)

Hallo,

mit
private JTextField txtOriginSystemID;

setzt Du nicht den Namen des Textfeldes sondern den Namen der Variablen.
Die Variable kann txtHansimGlueck heissen, waehrend Du das Textfeld selbst Bernd nennst.

Und den Namen den mit .getName() abfragst ist nicht der Name der Variablen, sondern eben den des Textfeldes und den musst DU vorher setzen.

Viele Gruesse
FenchelT


----------



## Gast (24. Jul 2007)

naja was hilft mir aber dan der Name wenn ich das testfield auslesen will ?

oder schreib ich dan auch wie von dir angegeben bernd.getText() oder was auch immer ?


----------



## Gastflo (24. Jul 2007)

also mien problem is:

ich hab auf einem panel ja nachdem welche information ich erhalte verschiedene textfelder (+ dazugehöre inof labels ) die da angezeigt werden

sobald er einen button drückt will ich den inhalt der textfelder an eine set Methode in einer anderen klasse übergeben

wie is im prinzip wurscht nur ka bin heute anscheinend zu blöd das ich da selber draufkomm 

steh grad so an ich geh mal weiter googeln


----------



## André Uhres (24. Jul 2007)

Der default Wert der name Property ist null. Das ist nun mal so.

```
/*
 * TextfeldDemo.java
 */
package text;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
public class TextfeldDemo extends JFrame {
    private JButton jButton1;
    private JLabel jLabel1;
    private JTextField jTextField1;
    private JTextField jTextField2;
    private JPanel panel7;
    public TextfeldDemo() {
        panel7 = new JPanel();
        jButton1 = new JButton();
        jTextField1 = new JTextField();
        jLabel1 = new JLabel();
        jTextField2 = new JTextField();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jButton1.setText("Hier klicken !");
        jButton1.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        panel7.add(jButton1);
        jTextField1.setText("jTextField1");
        jTextField1.setName("erstes Feld");
        panel7.add(jTextField1);
        jLabel1.setText("jLabel1");
        panel7.add(jLabel1);
        jTextField2.setText("jTextField2");
        jTextField2.setName("zweites Feld");
        panel7.add(jTextField2);
        getContentPane().add(panel7, BorderLayout.CENTER);
        setSize(400,300);
        setLocationRelativeTo(null);
    }
    private void jButton1ActionPerformed(final ActionEvent evt) {
        Component[] comps = panel7.getComponents();
        List<JTextField> fieldsList = new ArrayList<JTextField>();
        for (int i = 0; i < comps.length; i++) {
            if(comps[i] instanceof JTextField) {
                JTextField txt = (JTextField) comps[i];
                fieldsList.add(txt);
            }
        }
        for (JTextField textfeld : fieldsList) {
            System.out.println(textfeld.getName()+": "+textfeld.getText());
        }
    }
    public static void main(final String args[]) {
        new TextfeldDemo().setVisible(true);
    }
}
```


----------



## Gast (24. Jul 2007)

also danke mal für deine RIESEN hilfe.. hab so lange gebraucht weil ich ned gecheckt hab wie ich in eclipse einstell das ich java 5.0 haben will statt 1.4 und die for each schleife verlangt das anscheinend genau so wie die Liste

das einzige wo ich gerade scheiter is das ich übergeb in die set Methode die liste fieldsList

dort speicher ich sie in eine andere Liste .. mit

public void setInput(List txtFields)
    {
    	fieldData = txtFields;
    }

danach hab ich deine forschleife gehabt 

for (JTextField textfeld : fieldData)
....

nur das haut überhaupt nicht hin entweder speicher ich es falsch oder weis nicht .. mein problem is das sowhol diese Listen vom typ JTextField wie diese for each schleife neu sind und ich mich erst reinlesen muss

trotzdem danke


----------



## GastFlo (24. Jul 2007)

habs gelöst 

1 import vergessen und deshlab hat er JTextField ned gekannt

2 liste auf List<JTextFields> --- geändert und passt

danke für die zahlreiche hilfe


----------

