# AWT-Textfeld Aussehen ändern



## Jakobus_der_25.te (6. Mai 2007)

hi,

ich hab mal wieder ein kleines Problem mit meiner Maske. Ich würde gerne das Aussehen meiner AWT-Textfelder ändern. Also zum Beispiel die Rahmenfarbe so einstellen, dass der ""3D"-effekt der Textfelder nicht mehr vorhanden ist oder auch den Hintergrund usw.

Leider hab ich im Internet dazu keine Funtionsliste gefunden. WÄre also super, wenn mir jemand einen Link schicken oder hier eine Posten könnte.

Schon mal danke.

Jakob


----------



## André Uhres (6. Mai 2007)

Die Hintergrundfarbe kannst du mit "setBackground(...)" verändern.
Den Rand verändern geht, glaube ich, nur mit Swing. Beispiel:

```
JTextField tf = new JTextField(5);
        tf.setBorder(BorderFactory.createLineBorder(Color.BLACK));
```


----------



## Jakobus_der_25.te (6. Mai 2007)

Ok danke.

Jetzt tritt aber ein neues Problem auf: Ich hab jetzt alle Elemente in JElemente umgewandelt. Allerdings funtzt jetzt das ganze überhaupt nicht mehr.


```
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.applet.Applet;

public class notenrechner extends Applet {
  // Anfang Variablen
  //Layout-Variablen
   JLabel[] l_fach;
   JPanel[] p_noten;
   JTextField[][] t_ein_note_m, t_ein_note_s;
   JTextField[] t_note_fach;
   JTextField t_aus_ges;
   JButton b_berechnen;
  //Ende Layout-Variablen
  // Ende Variablen

  public void init() {
    // Anfang Komponenten
     //Variablen
     int f = 16; //gibt Zahl der Fächer an
     int n = 10; //gibt Zahl der möglichen einzugebenden Noten an
     int farbe = 0; //sorgt für abwechselnde Farbgebung 0=grau, 1=weis
     //Ende Variablen
     //Initialisierung Fächer-JLabels
     l_fach = new JLabel[f];
     //Notenfelder
     p_noten = new JPanel[f];
     t_ein_note_m = new JTextField[f][n];
     t_ein_note_s = new JTextField[f][n];
     t_note_fach = new JTextField[f];
     //"Bestückung" der Arrays
     for(int i = 0; i < f; i++){
       String fach ="";
       //Erstellt Fächer Beschriftung
       switch (i) {
         //Inahlt zu verkürzung entfernt
         // Hier werden nur den Labels beschriftungen zu gewiesen

       }
       l_fach[i] = new JLabel(fach);
       //Notenfelder
       p_noten[i] = new JPanel();
       t_note_fach[i] = new JTextField(4);
       t_note_fach[i].setEditable(false);
       for(int i2 =0; i2<n; i2++){
        t_ein_note_m[i][i2] = new JTextField(2);
        t_ein_note_s[i][i2] = new JTextField(2);
       }
     }
     //Ende "Arraybestückung"
   // Ende Komponenten

    //Layoutmanager
    GridBagLayout gbl = new GridBagLayout();
    GridBagConstraints gbc = new GridBagConstraints();
    setLayout(gbl);
    
    //Initialisierung Komponenten
    //Arrayeinsetzung
    for(int i = 0; i < f; i++){
     //JLabels
     gbc = makegbc(0, i, 1, 1);
        gbc.weightx = 0;
        gbc.weighty = 0;
        gbc.anchor = GridBagConstraints.WEST;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(l_fach[i], gbc);
        add(l_fach[i]);
      //Ende JLabels
      
      //Notenfelder
      p_noten[i].setLayout(gbl);
      if(farbe == 0){
         p_noten[i].setBackground(Color.lightGray);
         farbe = 1;
      }
      else
       farbe = 0;

      //Mündliche Noten Eingabe
      JLabel l_muendlich = new JLabel("Mündliche Noten");
      gbc = makegbc(0,0,1,1);
      gbl.setConstraints(l_muendlich, gbc);
      p_noten[i].add(l_muendlich);
      
      for(int i2=0; i2<n; i2++){
        gbc = makegbc(i2, 0, 1, 1);
        gbc.weightx = 0;
        gbc.weighty = 0;
        gbc.anchor = GridBagConstraints.CENTER;
        gbc.fill = GridBagConstraints.NONE;
        gbl.setConstraints(t_ein_note_m[i][i2], gbc);
        p_noten[i].add(t_ein_note_m[i][i2]);
      }
      
      //JLabel für Gesamtnoten
       JLabel l_note_fach = new JLabel("Gesammtnote");
        gbc = makegbc(n, 0, 1, 1);
        gbc.weightx = 0;
        gbc.weighty = 0;
        gbc.anchor = GridBagConstraints.CENTER;
        gbc.fill = GridBagConstraints.NONE;
        gbl.setConstraints(l_note_fach, gbc);
        p_noten[i].add(l_note_fach);
        
      //Schriftliche Noteneingabe
      JLabel l_schriftlich = new JLabel("Schriftliche Noten");
      gbc = makegbc(0,1,1,1);
      gbl.setConstraints(l_schriftlich, gbc);
      p_noten[i].add(l_schriftlich);
      
      for(int i2=0; i2<n; i2++){
        gbc = makegbc(i2, 1, 1, 1);
        gbc.weightx = 0;
        gbc.weighty = 0;
        gbc.anchor = GridBagConstraints.CENTER;
        gbc.fill = GridBagConstraints.NONE;
        gbl.setConstraints(t_ein_note_s[i][i2], gbc);
        p_noten[i].add(t_ein_note_s[i][i2]);
      }

      //JTextField gesamt ausgabe
        gbc = makegbc(n, 1, 1, 1);
        gbc.anchor = GridBagConstraints.CENTER;
        gbc.fill = GridBagConstraints.NONE;
        gbl.setConstraints(t_note_fach[i], gbc);
        p_noten[i].add(t_note_fach[i]);
        
        //JPanel Platzierung
        gbc = makegbc(1, i, 1, 1);
        gbc.weightx = 0;
        gbc.weighty = 0;
        gbc.anchor = GridBagConstraints.WEST;
        gbc.fill = GridBagConstraints.BOTH;
        gbl.setConstraints(p_noten[i], gbc);
        add(p_noten[i]);
        //Ende Notenfelder
    }
    //Ende Arrayeinsetzung
    //Ende Initialisierung
  }
  
  // Anfang Ereignisprozeduren
  // Ende Ereignisprozeduren
  
  //Hilfsmittel Methoden
   private GridBagConstraints makegbc(int x, int y, int width, int height) {
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.gridwidth = width;
        gbc.gridheight = height;
        gbc.insets = new Insets(1, 1, 1, 1);
        return gbc;
   }
   //Ende Hilfsmittel-Methoden

}
```

Wenn ich das jetzt ausführe, werden die ganzen Textfelder nur als etwas dickere Striche dargestellt.

Kann mir da jemand weiter helfen.


----------



## André Uhres (7. Mai 2007)

```
/*
 * notenrechner.java
 */
package applet;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.applet.Applet;

public class notenrechner extends Applet {
    // Anfang Variablen
    //Layout-Variablen
    JLabel[] l_fach;
    JPanel[] p_noten;
    JTextField[][] t_ein_note_m, t_ein_note_s;
    JTextField[] t_note_fach;
    JTextField t_aus_ges;
    JButton b_berechnen;
    //Ende Layout-Variablen
    // Ende Variablen
    
    public void init() {
        // Anfang Komponenten
        //Variablen
        int f = 16; //gibt Zahl der Fächer an
        int n = 10; //gibt Zahl der möglichen einzugebenden Noten an
        int farbe = 0; //sorgt für abwechselnde Farbgebung 0=grau, 1=weis
        //Ende Variablen
        //Initialisierung Fächer-JLabels
        l_fach = new JLabel[f];
        //Notenfelder
        p_noten = new JPanel[f];
        t_ein_note_m = new JTextField[f][n];
        t_ein_note_s = new JTextField[f][n];
        t_note_fach = new JTextField[f];
        //"Bestückung" der Arrays
        for(int i = 0; i < f; i++){
            String fach ="Fach "+(i+1);
            //Erstellt Fächer Beschriftung
            switch (i) {
                //Inahlt zu verkürzung entfernt
                // Hier werden nur den Labels beschriftungen zu gewiesen
                
            }
            l_fach[i] = new JLabel(fach);
            //Notenfelder
            p_noten[i] = new JPanel();
            t_note_fach[i] = new JTextField(4);
            t_note_fach[i].setEditable(false);
            for(int i2 =0; i2<n; i2++){
                t_ein_note_m[i][i2] = new JTextField(2);
                t_ein_note_s[i][i2] = new JTextField(2);
            }
        }
        //Ende "Arraybestückung"
        // Ende Komponenten
        
        //Layoutmanager
        GridBagLayout gbl = new GridBagLayout();
        GridBagConstraints gbc = new GridBagConstraints();
        setLayout(gbl);
        
        //Initialisierung Komponenten
        //Arrayeinsetzung
        for(int i = 0; i < f; i++){
            //JLabels
            gbc = makegbc(0, i, 1, 1);
            gbc.anchor = GridBagConstraints.WEST;
            gbc.fill = GridBagConstraints.BOTH;
            gbl.setConstraints(l_fach[i], gbc);
            add(l_fach[i]);
            //Ende JLabels
            
            //Notenfelder
            p_noten[i].setLayout(gbl);
            if(farbe == 0){
                p_noten[i].setBackground(Color.lightGray);
                farbe = 1;
            } else
                farbe = 0;
            
            //Mündliche Noten Eingabe
            JLabel l_muendlich = new JLabel("Mündliche Noten");
            gbc = makegbc(0,0,1,1);
            gbl.setConstraints(l_muendlich, gbc);
            p_noten[i].add(l_muendlich);
            
            for(int i2=0; i2<n; i2++){
                gbc = makegbc(i2+1, 0, 1, 1);//<--------------------------
                gbc.anchor = GridBagConstraints.CENTER;
                gbc.fill = GridBagConstraints.HORIZONTAL;//<--------------------------
                gbl.setConstraints(t_ein_note_m[i][i2], gbc);
                p_noten[i].add(t_ein_note_m[i][i2]);
            }
            
            //JLabel für Gesamtnoten
            JLabel l_note_fach = new JLabel("Gesammtnote");
            gbc = makegbc(n+1, 0, 1, 1);//<--------------------------
            gbc.anchor = GridBagConstraints.CENTER;
            gbc.fill = GridBagConstraints.NONE;
            gbl.setConstraints(l_note_fach, gbc);
            p_noten[i].add(l_note_fach);
            
            //Schriftliche Noteneingabe
            JLabel l_schriftlich = new JLabel("Schriftliche Noten");
            gbc = makegbc(0,1,1,1);
            gbl.setConstraints(l_schriftlich, gbc);
            p_noten[i].add(l_schriftlich);
            
            for(int i2=0; i2<n; i2++){
                gbc = makegbc(i2+1, 1, 1, 1);//<--------------------------
                gbc.anchor = GridBagConstraints.CENTER;
                gbc.fill = GridBagConstraints.HORIZONTAL;//<--------------------------
                gbl.setConstraints(t_ein_note_s[i][i2], gbc);
                p_noten[i].add(t_ein_note_s[i][i2]);
            }
            
            //JTextField gesamt ausgabe
            gbc = makegbc(n+1, 1, 1, 1);//<--------------------------
            gbc.anchor = GridBagConstraints.CENTER;
            gbc.fill = GridBagConstraints.HORIZONTAL;//<--------------------------
            gbl.setConstraints(t_note_fach[i], gbc);
            p_noten[i].add(t_note_fach[i]);
            
            //JPanel Platzierung
            gbc = makegbc(1, i, n, 1);//<--------------------------
            gbc.anchor = GridBagConstraints.WEST;
            gbc.fill = GridBagConstraints.BOTH;
            gbl.setConstraints(p_noten[i], gbc);
            add(p_noten[i]);
            //Ende Notenfelder
        }
        //Ende Arrayeinsetzung
        //Ende Initialisierung
    }
    
    // Anfang Ereignisprozeduren
    // Ende Ereignisprozeduren
    
    //Hilfsmittel Methoden
    private GridBagConstraints makegbc(int x, int y, int width, int height) {
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.gridwidth = width;
        gbc.gridheight = height;
        gbc.weightx = width;//<--------------------------
        gbc.weighty = height;//<--------------------------
        gbc.insets = new Insets(1, 1, 1, 1);
        return gbc;
    }
    //Ende Hilfsmittel-Methoden
    
}
```


----------



## L-ectron-X (7. Mai 2007)

Wäre es nicht korrekter, die Klasse von JApplet erben zu lassen? :wink:


----------



## Jakobus_der_25.te (8. Mai 2007)

Danke für eure Vorschläge, nur leider haben sie nicht funktioniert.

@ L-ectron-x: wenn ich sie von JApplet ableite kommt immer applet not initialized.
                     Könntest du mir das evtl noch mal genauer ausführen? Thx

@André: wenn ich deinen quelltext ausführe passiert genau das gleiche, wenn ich das package applet allerdings wegnehme gehts wieder. Kein AHnung warum.  :?:


----------



## André Uhres (8. Mai 2007)

Jakobus_der_25.te hat gesagt.:
			
		

> ..wenn ich das package applet allerdings wegnehme gehts wieder..


Das heisst, daß das Problem damit gelöst ist. "package" dient nur der Aufteilung der Quelldateien in "Pakete".


----------



## Jakobus_der_25.te (8. Mai 2007)

Naja nein, weil ausgangsproblem, also dass, wenn ich JComponents nehme, diese nicht mehr richtig dargestellt werden, weiterhin auftritt.


----------



## André Uhres (8. Mai 2007)

Bei mir funktioniert es.

E D I T : 
Und hier ist das Applet life: http://www.geocities.com/uhrand/Rechner.html


----------



## L-ectron-X (8. Mai 2007)

Jakobus_der_25.te hat gesagt.:
			
		

> wenn ich sie von JApplet ableite kommt immer applet not initialized.


Applet ist eine AWT-Komponente, JApplet ist die Erweiterung in Swing.
Generell sollten Komponenten der beiden GUI-APIs nicht miteinander gemischt werden, da es zu Problemen bei der Darstellung kommen kann.

Wenn du den oben angegebenen Fehler angezeigt bekommst, guckst du mal in die Java-Konsole. Poste mal dann hier die Fehlermeldung.


----------



## Jakobus_der_25.te (8. Mai 2007)

Danke für den Tipp. Jetzt funtzt zumindest das JApplet. 

Es gab die Fehlermeldung, dass ich anstelle von setLayout() und add()    getContentPane().setLayout() und getContentPane().add() verwenden sollte.

Allerdings besteht weiterhin der Fehler dass die JTextfelder als dickere Striche angezeigt werden. Kann es sein dass man bei JTextFields die größe in einer anderen Einheit angeben muss als bei awt-textfields?

HIer auf jedenfall mal Beispiel-Code für meine TextField initialisierung:


```
t_ein_note_m[i][i2] = new JTextField(2);
        t_ein_note_s[i][i2] = new JTextField(2)
```

Die Arrays werden weiter oben deklariert.

Achja als Layout-Manager verwende ich ein GridBagLayout.


----------



## André Uhres (9. Mai 2007)

wieso funzt es bei mir  http://www.geocities.com/uhrand/Rechner.html und nicht bei dir ???
Beim GridBagLayout ist übrigens dies wichtig für die Grösse:

```
gbc.weightx = width;
        gbc.weighty = height;
```
Du hattest nämlich zu Beginn immer auf 0 gesetzt.


----------



## Guest (9. Mai 2007)

Hi kann mir das Applet im Inet leider net anschauen, weils sowohl mein IE und auch mein Firefox(Version 1.5.0.11) nicht schlucken. 
Ein Testapplet bei Java-Sun hat er allerdings angezeigt. Kann mir da vllt grade mal jemand weiterhelfen?

Thx.

PS: Bisher hab ich mir das Applet immer über den Applet-fewer von meinem Java-Editor anzeigen lassen. Da trat dann eben das besagte Problem auf.


----------



## André Uhres (9. Mai 2007)

Anonymous hat gesagt.:
			
		

> ..Ein Testapplet bei Java-Sun hat er allerdings angezeigt..


Poste bitte den Link zu diesem Testapplet bei Java-Sun.


----------

