Variableninhalt als Namen für eine andere Variable

IIIRaVeNIII

Mitglied
Hallo!

Ich habe folgendes Problem:

Code:
protected void makeTextarea(String name, GridBagLayout gridbag, GridBagConstraints c)
{
    JTextArea name = new JTextArea();
    gridbag.setConstraints(name, c);
    name.setEditable(false);
    this.getContentPane().add(name);
}

//Der Aufruf der Textarea
makeTextarea("artLI", gridbag, c);

Oben erstelle ich ein allgemeines Textarea Objekt und möchte nun von unten einen Namen für das Objekt mitgeben. Nun ist ja klar, dass der Compiler bei dem markierten "name" meckert... Aber wie kann ich es trotzdem hinkriegen? sonst müsste ich jeweils für jedes Objekt den ganzen Block schreiben... und da würden dann noch einige andere Dinge dazukommen!

Ich hoffe es versteht jemand, was ich sagen will, und dass jemand vielleicht einen Vorschlag für mich hätte! (ich hab gerade erst vor nem halben Jahr mit Java angefangen und ich weiß leider nicht mal, wonach ich suchen müsste)

Danke schonmal im vorraus!

greetz

R@ven
 
Das ganze soll ein GridBagLayout werden!

Wobei ich darin relativ viele Objekte habe, wie Labels, Textfields, usw. Nun wollte ich mir die Arbeit ersparen und nicht jedesmal den ganzen Block, den ich zum erstellen eines solchen benötige, hinschreiben.

Deshalb wollte ich je ein allgemeines Objekt bauen lassen und nur noch individuelle dinge übergeben, wie zB den Namen.

Das es so nicht funktioniert habe ich auch gemerkt :p !

Aber gibt es keine möglichkeit im den Inhalt des Strings als namen für das Objekt zu übergeben?
 
IIIRaVeNIII hat gesagt.:
Das ganze soll ein GridBagLayout werden!

Das haben schon andere Leute anders realisiert. ;)

Wobei ich darin relativ viele Objekte habe, wie Labels, Textfields, usw. Nun wollte ich mir die Arbeit ersparen und nicht jedesmal den ganzen Block, den ich zum erstellen eines solchen benötige, hinschreiben.

Hm?

Deshalb wollte ich je ein allgemeines Objekt bauen lassen und nur noch individuelle dinge übergeben, wie zB den Namen.

Das es so nicht funktioniert habe ich auch gemerkt :p !

Aber gibt es keine möglichkeit im den Inhalt des Strings als namen für das Objekt zu übergeben?

Möglicherweise lässt sich sowas mit einem ClassLoader irgendwie regeln, kenne mich damit aber auch nicht aus. Prinzipiell kann ich mich aber des Eindrucks nicht erwehren, dass Du da eine ziemlich dubiose Sache vor hast und besser zu den üblichen "sauberen" Mitteln greifen solltest.
 
Na klar haben das andere Leute anders realisiert mit dem GridBagLayout! Die Idee habe ich durch etwas aus der API bekommen:

Code:
import java.awt.*;
 import java.util.*;
 import java.applet.Applet;

 public class GridBagEx1 extends Applet {

     protected void makebutton(String name,
                               GridBagLayout gridbag,
                               GridBagConstraints c) {
         Button button = new Button(name);
         gridbag.setConstraints(button, c);
         add(button);
     }

     public void init() {
         GridBagLayout gridbag = new GridBagLayout();
         GridBagConstraints c = new GridBagConstraints();

         setFont(new Font("SansSerif", Font.PLAIN, 14));
         setLayout(gridbag);

         c.fill = GridBagConstraints.BOTH;
         c.weightx = 1.0;
         makebutton("Button1", gridbag, c);
         makebutton("Button2", gridbag, c);
         makebutton("Button3", gridbag, c);

           c.gridwidth = GridBagConstraints.REMAINDER; //end row
         makebutton("Button4", gridbag, c);

         c.weightx = 0.0;                  //reset to the default
         makebutton("Button5", gridbag, c); //another row

           c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
         makebutton("Button6", gridbag, c);

           c.gridwidth = GridBagConstraints.REMAINDER; //end row
         makebutton("Button7", gridbag, c);

           c.gridwidth = 1;                //reset to the default
           c.gridheight = 2;
         c.weighty = 1.0;
         makebutton("Button8", gridbag, c);

         c.weighty = 0.0;                  //reset to the default
           c.gridwidth = GridBagConstraints.REMAINDER; //end row
           c.gridheight = 1;               //reset to the default
         makebutton("Button9", gridbag, c);
         makebutton("Button10", gridbag, c);

         setSize(300, 100);
     }

     public static void main(String args[]) {
           Frame f = new Frame("GridBag Layout Example");
           GridBagEx1 ex1 = new GridBagEx1();

           ex1.init();

           f.add("Center", ex1);
           f.pack();
           f.setSize(f.getPreferredSize());
           f.show();
     }
 }

Nur das Problem ist, ich kann im nachhnein leider nicht mehr auf die Objekte zugreifen, da ich ja keine expliziten Namen vergeben habe..

sonst fänd ich das sehr schön, da es eine Menge Quelltextlänge spart. Wenn ich es anders mache hab ich 5-6mal so viel Quelltext.. :(
 
IIIRaVeNIII hat gesagt.:
Na klar haben das andere Leute anders realisiert mit dem GridBagLayout! Die Idee habe ich durch etwas aus der API bekommen:
Nur das Problem ist, ich kann im nachhnein leider nicht mehr auf die Objekte zugreifen, da ich ja keine expliziten Namen vergeben habe..

Deshalb geht das wohl in Java nicht - Java ist eine saubere Sprache. ;)

sonst fänd ich das sehr schön, da es eine Menge Quelltextlänge spart. Wenn ich es anders mache hab ich 5-6mal so viel Quelltext.. :(

3x
Statt
makebutton("Button1", gridbag, c);

muss ja nur

Button button1 = new Button(name);
gridbag.setConstraints(button, c);
add(button);

für jeden Button ausgeführt werden.

Ich weiß jedenfalls von keiner Möglichkeit, sowas umzusetzen.
 
Hallihallo,
also mir ist nicht ganz klar was Du wirklich willst, aber Deiner Überschrift zu folgen würde ich entweder einen Vector oder ArrayList verwenden oder wenn die Informationen (Textfelder oder was auch immer) über symbolisch abgerufen weden sollen über eine Map speichern.

Takidoso
 
Zurück