Hallo Leute, ich habe ein Problem die Name des Components rauszukriegen, wenn Ihr mir helfen könnten wäre es echt super. Giebt's eine andere Möglichkeit ohne java.lang.reflect.*; das Objectname hinzubekommen ?
hier kleine Beispiel was ich eigentlich haben möchte.
Vielen Dank im Voraus
Code:
public static void CMain(String[] args)
{
String compname=""; //Hier soll die name von Object text rein und nicht Object selbst
CObject obj=new CObject();
}
class CObject()
{
JTextArea text=new JTextArea();
}
danke für die Antwort, das geht leider nicht, mit ihre Variante bekomme ich dann die Classname javax.swing.JTextArea, ich brauche aber Instanzname von dieser Classe, in meinen Fall is das >>> text <<<
ich hab mal den titel geändert...
ich glaube nicht dass das mit reflection geht :-/ wozu willst du das denn wissen? vllt. gibts noch ne andere möglichkeit...
edit: den namen von klassen/instanzvariablen kannst du schon rausbekommen mti der Methode Field#getName (sollte gehen, habs net ausprobiert). aber methodenvariablen gehen wohl nicht
ich will die Instanzname haben weil, es sollte mit Datenbank Einträge verglichen werden und dann in die richtige Feld sollte ein Wert aus Datenbank gesetzt werden.
nein, nicht sicher deshalb bin ich auch hier, kannst du bitte ein kleines Beispeil schreiben für einen Anfänger ?
weil ich keine Ideen mehr habe, wie ich dass realesieren könnte, Hauptsache dass ich die Instanznamen habe.
em ich kenn dein programm nicht, aber irgendwie sollte das so gehen:
Code:
class CMain {
// hauptprogramm
public static void main(String[] kartoffelsalat) {
CGui g= new CGui();
SQLManager sql = new SQLManager(); // pseudo klasse die daten aus der db holt
sql.connect("user", "pw", "host");
String daten = sql.fetch("select text from irgendwo where id like '1'");
g.updateData(daten);
}
}
class CGui extends JFrame {
private JTextArea text
public CGui() {
super("Daten:");
setSize(bla, bla);
// bliblablo
add(text, BorderLayout.CENTER);
setVisible(true);
}
public void updateData(String text) {
text.setText(text);
}
}
das is jetz pseudo code. vielleicht kannst du damit was anfangen...
Roar Vielen Dank für deine Mühe,
könntes du mal vielleicht sagen, wie kann ich die Objecte sonst vergleichen, außer mit dem Obectname, giebt's irgend welche Identifikationnummer ?
Roar Vielen Dank für deine Mühe,
könntes du mal vielleicht sagen, wie kann ich die Objecte sonst vergleichen, außer mit dem Obectname, giebt's irgend welche Identifikationnummer ?
ehm ich versteh dein problem nicht. was willst du vergleichen. wieso!? wieso musst du denn überhaupt die objektnamen in die datenbank reinschrieben? hol deinen wert raus, und stecke ihn in das etsprechende feld. die rückgaben von deiner db haben doch imemr das gleiche format.
ich schieb das mal nach anfängerfragen :? hat ja nix mit swing zu tun
du kannst den variablennamen nicht rausbekommen !?
du könntest höchstens bei der initialisierung per text.setName("text"); deiner komponente einen pseudo namen geben, und den dann per getName() holen.
!? es geht nicht! du kannst den variablennamen nicht rausbekommen! und ich will den variablennamen auch nicht setzen,. das is tder name der kopmonente. wieso abreitest du nicht mit den kopmonenten namen anstatt mit dem variablennamen!?!?
Ich würde vielleicht irgendetwas in die Richtung schreiben:
Eine Klasse, die einen Spaltenname der Tabelle aufnimmt sowie ein Eingabefeld (JTextField, JTextArea, ...). Alle Objekte dieser Klasse in einen Vector stecken. Und dann noch eine Klasse schreiben, die eine Tabelle bzw. ein ResultSet aus der Datenbank ausliest und mit den Infos aus den Objekten im Vector in die Eingabefelder speichert.
Die Frage, wie man an die Namen der Variablen rankommt, wurde schon öfters hier im Forum gestellt. Der Variablennamen darf aber nicht für das Programm wichtig sein. Wenn nämlich ein Entwickler - vielleicht ein anderer als man selber - das Programm mal irgendwann umstellen sollte - insbesondere die Variablennamen - funktioniert die ganze schöne Konstruktion nicht mehr. Man sollte in dem Fall immer versuchen eine andere Lösung zu finden.