Appearance
Grafikeinführung in Java
2
JFrame
java
import javax.swing.JFrame;
public class HelloApp {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello Application");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new HelloPanel());
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Ein Frame / Window
23.09.2022
Grafikeinführung in Java
3
JPanel
java
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class HelloPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
g.drawString("It's SPACE!", 120, 280);
}
}
23.09.2022
Grafikeinführung in Java
4
paintComponent(Graphics g)
Bei der Klasse Panel überschreiben wir die Methode paintComponent
. Wir ersetzen hiermit die "Standardimplementierung" mit unserer eigenen Implementierung.
Wir rufen paintComponent
nie selber auf, sondern das System ruft paintComponent
auf.
23.09.2022
Grafikeinführung in Java
5
Der Parameter Graphics g
Graphics g
ist unsere Kreide. Mit ihr können wir im Panel drin zeichnen.
23.09.2022
Grafikeinführung in Java
7
Anatomie eines Panels
- Breite:
getWidth()
alsint
in Pixel - Höhe:
getHeight()
alsint
in Pixel paintComponent
wird aufgerufen:- wenn das JPanel erstellt wird
- wenn es die Grösse ändert
- wenn mit
repaint()
neues Zeichnen forciert wird
23.09.2022
Grafikeinführung in Java
8
Was können wir mit Graphics g
zeichnen?
Methode von Graphics g | |
---|---|
setColor | Setzt die aktuelle Farbe |
drawLine | Linie |
drawRect | Rechteck |
fillRect | gefülltes Rechteck |
drawOval | Kreis |
fillOval | gefüllter Kreis |
drawString | Text |
drawImage | png / jpg |
23.09.2022
Grafikeinführung in Java
9
Libraries und Imports
java
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
Packages sind hirarchisch strukturiert und stellen Funktionalität zur Verfügung.
23.09.2022
Grafikeinführung in Java
10
Math Library
java
public class MathDemo {
public void doSomeMath() {
// Pseudorandom Zahl zwischen 0 und 1
double random = Math.random();
// Trigonometrie
double len = Math.sin(Math.PI / 4);
// Exponent
double p = Math.pow(2, 10);
// Konstanten
double pi = Math.PI;
double e = Math.E;
}
}
23.09.2022