tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
486
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    IIIRaVeNIII IIIRaVeNIII ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    42
    Hallo!

    Ich habe folgendes Problem:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    protected void makeTextarea(String name, GridBagLayout gridbag, GridBagConstraints c)
    {
        JTextArea [B]name[/B] = 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
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    So funktioniert das natürlich nicht.
    Aber ich frage mich auch, wofür soll das gut sein?
     

  3. #3
    IIIRaVeNIII IIIRaVeNIII ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    42
    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 !

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

  4. #4
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Zitat Zitat von IIIRaVeNIII
    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 !

    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.
     

  5. #5
    IIIRaVeNIII IIIRaVeNIII ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    42
    Na klar haben das andere Leute anders realisiert mit dem GridBagLayout! Die Idee habe ich durch etwas aus der API bekommen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    
    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..
     

  6. #6
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Zitat Zitat von IIIRaVeNIII
    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.
     

  7. #7
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    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
     

Ähnliche Themen

  1. C# - Kann eine Klasse sich selbst an eine andere übergeben?
    Von Aero13 im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 12.01.11, 15:23
  2. Antworten: 5
    Letzter Beitrag: 15.06.07, 10:01
  3. Antworten: 8
    Letzter Beitrag: 24.10.05, 11:01
  4. Eine Variable von einer Funktion an eine andere übergeben
    Von pride im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 26.08.05, 22:59
  5. Antworten: 2
    Letzter Beitrag: 25.01.03, 15:33