api:documentation:grafik:gui
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Vorhergehende Überarbeitung | |||
— | api:documentation:grafik:gui [2025/05/08 15:07] (aktuell) – [OnChange-Listener] martin | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== GUI-Elemente ====== | ||
+ | <WRAP center round info 80%> | ||
+ | Die Online-IDE bringt ein paar einfache GUI-Elemente mit, mit denen sich Dialoge bauen lassen: | ||
+ | * Button | ||
+ | * Textfield (einzeiliges Texteingabefeld) | ||
+ | * Checkbox (Ankreuzfeld) | ||
+ | * Radiubutton (Auswahlfeld) | ||
+ | |||
+ | Das folgende kleine Beispiel zeigt die Verwendung. | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | MyButton b = new MyButton(); | ||
+ | while(true); | ||
+ | |||
+ | class MyButton extends Button { | ||
+ | | ||
+ | | ||
+ | |||
+ | Text t1 = new Text(50, 250, 32, "Ich bin"); | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | super(400, 500, 32, " | ||
+ | t1.setFillColor(0x808080); | ||
+ | rSchueler.connectTo(rLehrkraft, | ||
+ | } | ||
+ | |||
+ | | ||
+ | print(" | ||
+ | println(cb.isChecked() ? " | ||
+ | println(" | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Methodenaufruf bei Benutzeraktionen ===== | ||
+ | <WRAP center round info 80%> | ||
+ | Es gibt zwei Möglichkeiten, | ||
+ | * Überschreiben der Methode '' | ||
+ | * Implementieren eines '' | ||
+ | |||
+ | </ | ||
+ | ==== Überschreiben der onChange-Methode ==== | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | MyTextField t = new MyTextField(50, | ||
+ | while(true); | ||
+ | |||
+ | class MyTextField extends TextField { | ||
+ | |||
+ | public void onChange(String newValue) { | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== OnChange-Listener ==== | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | TextField t = new TextField(50, | ||
+ | t.addChangeListener(new MyChangeListener()); | ||
+ | while(true); | ||
+ | |||
+ | class MyChangeListener implements GuiChangeListener{ | ||
+ | |||
+ | public void onChange(Object changedObject, | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Verändern des Aussehens ===== | ||
+ | <WRAP center round info 80%> | ||
+ | Alle GUI-Elemente verfügen über Methoden zum Ändern (fast) aller Farben und lassen sich beliebig vergrößern/ | ||
+ | </ | ||
+ | |||
+ | ==== Extrembeispiel ==== | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | <script type=" | ||
+ | SystemTools.setSpeed(-1); | ||
+ | |||
+ | MyTextField t = new MyTextField(200, | ||
+ | t.setFillColor(Color.bisque); | ||
+ | t.setBorderColor(Color.blueviolet); | ||
+ | t.setBorderWidth(8); | ||
+ | t.setTextColor(0x942424); | ||
+ | |||
+ | class MyTextField extends TextField { | ||
+ | |||
+ | public void onChange(String newValue) { | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | | ||
+ | rotate(0.5); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||