eigene Graphikbedienelemente

robochris

Aktives Mitglied
Hallo Zusammen,

ich würde gerne ein paar eigene graphische Bedienelemente erzeugen.
Als erstes Beispiel möchte ich ein Element machen, welches vorne die Beschreibung und hinten den Wert anzeigt. Also in etwa so:

Beschreibung Wert

oder

Name Hase

Dazu habe ich folgende Klasse erzeugt:

Java:
public class CHValue extends JPanel
{
   String label;
   String value;
  
   JLabel labelText;
   JTextField valueText;
  
   public CHValue(String label, String value)
   {
     //super(new BorderLayout());
     this.label=label;
     this.value=value;
     labelText=new JLabel(label);
     super.add(labelText,"West");
     valueText=new JTextField(value);
     super.add(valueText,"East");
     valueText.setCaretColor(Color.WHITE);

   }
}

Ist das so ungefähr der richtige Weg?
 
Zuletzt bearbeitet von einem Moderator:
Moin,

hier mal ein paar Anmerkungen dazu :
Java:
public class CHValue extends JPanel
{
  // wozu brauchst Du diese Variablen ??
  String label; 
  String value;

  JLabel labelText;
  JTextField valueText;

  public CHValue( String label, String value )
  {
    //super(new BorderLayout());  ???
    labelText = new JLabel(label); // erzeugt das neue Label MIT Text !!
    valueText = new JTextField(value); // dito

    // Kann man so machen, allerdings erschließt sich mir der Sinn nicht!
    // Wozu sind die eigenen Stringvariablen gut?
    // this.label=label;
    // this.value=value;

    // Macht IMHO Mit dem Super-Konstruktor wenig Sinn!!
    // Adde sie extern dort, wo das Objekt der Klasse CHValue verwendet wird
    // zudem übergibst und setzt Du die Texte hier doch schon!
    // Warum werden sie hier händisch wieder überschrieben ??
    // super.add(labelText,"West");
    // super.add(valueText,"East");

    valueText.setCaretColor(Color.WHITE);
  }
}

Ist das Ganze nur ein Test?
Was ist ggf. Deine Aufgabe?

Gruß Klaus
 
> Macht IMHO Mit dem Super-Konstruktor wenig Sinn!!
> Adde sie extern dort, wo das Objekt der Klasse CHValue verwendet wird

Meine Idee bei dem ganzen ist, dass das Objekt gekapselt sein soll. Die Objekte sollen auf keinen Fall extern hinzugefügt werden, sondern Teil des CHValue sein. Der Zugriff auf die Daten erfolgt später mit Getter- und Setter
 
Der Sinn des ganzen ist, dass der Aufruf sehr einfach aussehen soll:

Java:
CHValue val=new CHValue("Name","Hase");
fenster.getContentPane().add(val, "North");
 
Zuletzt bearbeitet von einem Moderator:
Java:
CHValue val=new CHValue("Name","Hase");
fenster.getContentPane().add(val, "North");
Schau mal hier: http://stackoverflow.com/questions/5921442/does-getcontentpane-add-mean-the-same-as-add

Mal davon abgesehen, das CHValue ein seltsamer Bezeichner für ein Panel ist und mal davon abgesehen, dass hier jetzt keiner weiß, was "Fenster" für ein Objekt/Klasse ist, könnte das so funktionieren ("North" klingt jetzt nach einem BorderLayout ?!?)

Könntest Du nicht einfach mal den GESAMTEN Code posten ??

Gruß Klaus
 
Vielleicht ist es etwas unpraktisch, so ein größeres Projekt als Testumgbung zu nehmen, deshalb habe ich ein eigenes Repository dafür gemacht:
https://github.com/ChrisMicro/java_...le_GUI_elements/src/gui_elements/CHValue.java

Der Testcode sieht jetzt so aus:
Java:
public class ValueExample
{
public static void main(String[] args)
{
JFrame fenster;
fenster=new JFrame("value example");
fenster.setPreferredSize(new Dimension(640, 480));
fenster.getContentPane().setLayout(null);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

CHValue value1=new CHValue("name","rabbit");
fenster.add(value1);

fenster.pack(); fenster.setVisible(true);
}
P.s.: wie kann ich hier im Forum die Java-Code-Formatierung einschalten?
 
Zuletzt bearbeitet von einem Moderator:
>In den Code Tags einfach "=java" hinzufügen:
Java:
//JAVA CODE HERE

Danke 🙂

Ich habe versucht, ein Slider-Element zu bauen. Es hat vorne den Namen, dann den Slider und hinten den Wert als Anzeige. Wenn man den Slider bewegt, wird die Anzeige angepasst.
formatierungstechnisch ist es aber nicht so schön geworden. Die Anzeige hinten ist zu hoch. Irgendwie schaffe ich es bei dem verwendeten Box-Layout nicht, die Anzeige etwas flacher zu bekommen.

Hier das Bild:
https://github.com/ChrisMicro/java_...GUI_elements/simple_GUI_elements_overview.png
( Die Einbettung als Bild in diesen Thread scheint nicht zu gehen )
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben