Plugin-Erstellung/Java/UIElement Klasse
UIElement Klasse
ist die Basisklasse für sämtliche UI-Elemente der Java Plugin-API. Ein UIElement kann als Container, Button, Panel und für weitere Zwecke eingesetzt werden.
Andere UI-Elemente (wie Textfelder oder Labels) sind von dieser Klasse abgeleitet.
Die Klasse UIElement erbt von java.lang.Object und wird mit dem Unity UI Toolkit (UITK) gerendert.
Die visuellen Eigenschaften werden über ein Style-Objekt beschrieben.
Dieser Artikel dokumentiert einige wichtige Methoden der UIElement Klasse und zeigt anhand ausgewählter Java-Beispiele, wie diese zu verwenden sind.
Hier sind nicht alle Methoden aufgeführt.
Die vollständige API-Dokumentation mit allen Methoden, Feldern und Konstruktoren ist im JavaDoc zu finden.
Dokumentation
Die Klasse UIElement ist unter JavaDoc: Class UIElement zu finden. Die vollständige API-Dokumentation mit allen Klassen, Methoden, Feldern und Konstruktoren ist im JavaDoc zu finden.
Java Paket
In der Java Plugin-API bezeichnet der Begriff "Package" (Paket) eine Gruppierung von zusammengehörigen Klassen, Interfaces und anderen Paketen. Die UIElement Klasse befindet sich im Package net.risingworld.api.ui.
Subklassen
Die Klasse UIElement ist die Basisklasse für sämtliche UI-Elemente. Aus dem JavaDoc geht hervor, dass unter anderem folgende Klassen direkt von UIElement abgeleitet sind:
- UILabel – Text-Label
- UIMesh – Mesh-Element. Es ermöglicht benutzerdefinierte Formen und Elemente auf dem Bildschirm zu erstellen.
- UIPainter2D – 2D-Zeichenoberfläche
- UIScrollView – scrollbarer Container
- UITextField – einzeiliges Textfeld
Beispiel addChild
Erstellt ein Label (als Kind-Element) innerhalb eines Panels (Eltern-Element). Über die Methode addChild() lässt sich ein UIElement einem anderen Element als Kind zuordnen. Position und Style des Kindes richten sich dann nach dem neuen Eltern-Element. Änderungen am Eltern-Element (etwa Verschieben, Größe ändern, Sichtbarkeit) wirken sich automatisch auf alle Kinder aus.
//Den "Eltern"-Bereich erzeugen
UIElement panel = new UIElement();
panel.setPosition(100, 500, false);
panel.setSize(400, 300, false);
//Farbe ändern (transparentes Grau)
panel.setBackgroundColor(0.5f, 0.5f, 0.5f, 0.5f);
//Panel zur Spieler-UI hinzufügen (nur für das Eltern-Element notwendig!)
player.addUIElement(panel);
//Nun ein Label genau in der Mitte des Panels erzeugen
//Da das Label ein Kind-Element ist, ist die Position relativ zum Eltern-Element!
UILabel label = new UILabel("Ich bin ein Kind-Element!");
label.setPosition(50, 50, true);
//"Pivot" auf "Mitte" setzen
label.setPivot(Pivot.MiddleCenter);
//Zum Beispiel die Schriftgröße ändern
label.setFontSize(42);
//Label als Kind-Element zum "panel"-Eltern-Element hinzufügen
panel.addChild(label);Die Methode addChild() mit Codeschnipsel ist unter javadoc RW: Class UIElement - addChild(UIElement) zu finden.
Beispiel onClick
Überschreibt die onClick()-Methode direkt bei der Initialisierung über eine anonyme Klasse. Wenn ein Spieler auf das Label klickt, werden sowohl das PlayerUIElementClickEvent-Event als auch die onClick()-Methode ausgelöst. Über setClickable(true) wird das Element als klickbar markiert.
//Ein Label als "anonyme Klasse" erzeugen, also die onClick()-Methode
//während der Initialisierung überschreiben. Klickt der Spieler auf das Label,
//werden sowohl das "PlayerUIElementClickEvent" als auch die onClick()-Methode aufgerufen
UILabel label = new UILabel("Klick mich!"){
@Override
public void onClick(PlayerUIElementClickEvent event)
{
//Etwas tun, zum Beispiel eine Chatnachricht senden
event.getPlayer().sendTextMessage("Du hast auf ein Label geklickt!");
//Das Label aus der Spieler-UI entfernen, falls gewünscht
//Da wir uns "innerhalb" der UILabel-Klasse befinden, bezieht sich "this" auf die konkrete Label-Instanz
event.getPlayer().removeUIElement(this);
}
};
//Position und Größe des Labels setzen
label.setPosition(50, 50, true);
label.setSize(100, 50, false);
//Label als klickbar markieren
label.setClickable(true);
//Label nicht vergessen, zur Spieler-UI hinzuzufügen
player.addUIElement(label);Die Methode onClick() mit Codeschnipsel ist unter javadoc RW: Class UIElement - onClick(PlayerUIElementClickEvent) zu finden.
Wichtige Methoden in diesem Beispiel
UIElement.onClick()– wird aufgerufen, wenn ein Spieler auf das Element klickt. Voraussetzung: Das Element wurde zuvor mitsetClickable(true)als klickbar markiert.UIElement.setClickable()– legt fest, ob das Element auf Mausklicks reagiert und dasPlayerUIElementClickEventauslöst.Player.addUIElement()– fügt ein UI-Element der Spieler-UI hinzu.Player.removeUIElement()– entfernt ein UI-Element wieder aus der Spieler-UI.PlayerUIElementClickEvent– Event, das ausgelöst wird, sobald ein Spieler auf das UI-Element klickt.
Beispiel setFontSize
Erzeugt ein Label in der oberen Bildschirmmitte und legt Schriftart, Schriftgröße sowie Schriftfarbe fest. Die Methode setFontSize() wird auf der Subklasse UILabel aufgerufen.
//Label mit dem Text "Hello World" erzeugen
UILabel label = new UILabel("Hello World");
//Wir möchten den Text zentriert darstellen
label.setTextAlign(TextAnchor.MiddleCenter);
//Eine Schriftart, Schriftgröße und Schriftfarbe festlegen
label.setFont(Font.Medieval);
label.setFontSize(64f);
label.setFontColor(0xFFFFFFFF);
//Optional eine Hintergrundfarbe setzen
label.setBackgroundColor(0x000000FF);
//Das UI-Element zum Spieler hinzufügen
player.addUIElement(label);Die Methode setFontSize() mit Codeschnipsel ist unter javadoc RW: Class UILabel - setFontSize(float) zu finden.
Java Override Annotation
Mit der Java @Override Annotation können wir dem Compiler mitteilen, dass wir absichtlich die Methode der UIElement-Oberklasse (in diesem Fall onClick()) überschreiben wollen.
Siehe auch
- Erstellung eines JAVA Plugin-Projekts für Rising World in Eclipse
- Wiki Kategorie: "Java"
- Wiki Kategorie: "Plugin-API"
API Dokumentation
- JavaDoc RW: API Package summary
- JavaDoc RW: Class UIElement
- JavaDoc RW: Package UI
- JavaDoc RW: Class Style (für UI-Styles)
- JavaDoc RW: PlayerUIElementClickEvent
Forum
- Rising World Forum: Getting started
- Rising World Forum: Create a Plugin
- Rising World Forum: Code Schnipsel
Kategorien
| Tutorial Kategorien
Tutorial (5 S) |
Plugin-Erstellung
|