eigene Swing-Komponente. Drehregler

Status
Nicht offen für weitere Antworten.

Flashbanger

Mitglied
Hallo

ich probiere mich gerade an einer eigenen Swing-Komponente, die einen Drehregler darstellen soll. Optisch gesehen soll es eher ein ganz simpler 2D Reglerknopf sein in dessen Mitte ein String den Wert anzeigt. Optisch und Mathematisch kein großes problem. In Delphi hab ich sowas auch schon mal gemacht. Das Ableiten einer Klasse von JComponent macht auch keine probleme, aber aus meiner Delphizeit weis ich, das man um Flackerfrei zu zeichnen in eine Bitmap zeichen muss.

Unter Java muss es ja keine Bitmap sein. Ich will, dass die Paint Procedure immer eine interne Grafikkomponente zeichnet, und diese Grapfikkomponente wird nur verändert, wenn Werte verändert werden. So nun dachte ich, das ich einfach eine private Graphics deklariere, beim constructor initialisiere und im destructor verwerfe.

Nur igendwie krieg ich das nicht hin. Welche Klasse eignet sich als Puffer?

Gruß Flashbanger
 

Marco13

Top Contributor
Kein Puffer. Und schon gar kein Graphics zwischenspeichern. Und ... ähm ... Destruktor? In Java?

Wie auch immer. Alles, was du zeichnen willst, muss von der paintComponent-Methode aus gezeichnet werden, und zwar in das Graphics, das dort übergeben wird. Wenn du irgendwas puffern wolltest, könntest du das in ein BufferedImage malen, aber wozu sollte das gut sein?
 

Flashbanger

Mitglied
Die Paint Methode wird ja auch aufgerufen, wenn er Button sich nicht verändert hat, aber trotzdem neugezeichnet werden muss. Wenn zum Beispiel ein Fenster den Button verdeckt hat. Dann muss zwar der Button neu gezeichnet werden, aber das Aussehen des Buttons hat sich ja net verändert. Der Drehknopf hätte immernoch den selben Durchmesser, die selbe Farbe, etc. Ich immer nur dann den Drehknopf zeichnen, wenn ich es auch muss. Also soll der Drehknopf in einem Image gespeichert werden und, nur das Image wird in der Paint-Methode gezeichnet. Ändert der User einen Wert(z.b. den Durchmesser) dann wird der Button auf dem Image neugezeichnet und dann das Image auf den Graphics gezeichnet. Dadurch braucht das Programm weniger CPU-Zeit.

Gruß Flashbanger

PS:// Ich hoffe es ist klar geworden, was ich meine.
 
B

Beni

Gast
Falls du planst Transparenz, Farbverläufe, viele viele Linien, etc einzusetzen und Angst hast, das benötigt zuviel Zeit: es ist erstaunlich wie schnell heutzutage die Computer sind.

Falls du nicht gerade jedes Pixel einzeln berechnest, wird das vermutlich in wenigen Nanosekunden durchrauschen. Der Aufwand ein Bild aus dem RAM zu lesen wird grösser sein als es neu zu zeichnen... (+ neu zeichnen benötigt weniger RAM).

Glaubst mir nicht? Probier es erst aus (sind ja dann nur wenige Zeilen Unterschied im Code) :wink:
 

Marco13

Top Contributor
Jo, klar, nur ... ob sich das lohnt? Eigentlich sind die wenigsten GUI-Elemente zeitkritisch - sooo kompliziert kann so ein Regler ja auch nicht zu zeichnen sein... Also, was glaubst du, was der Anlass dafür sein könnte, dass diese Vorgehensweise vernünftig ist? Ein Benutzer, der eine komplizierte, höchst-Zeitritische Berechnung laufen hat, und dann spaßeshalber ein paar hundert mal schnell hintereinander ein Fenster vor deinen Regler schiebt und wieder wegnimmt? Wie auch immer....

Normal:
Code:
class Foo extends JComponent
{
    public void paintComponent(Graphics g)
    {
        paintSomeNiftyThingsOn(g);
    }
}

Wie du's willst
Code:
class Foo extends JComponent
{
    private BufferedImage image = null;
    private boolean contentsHasChanged = true;

    public void paintComponent(Graphics g)
    {
        if (image == null || image.getWidth() != getWidth() || image.getHeight() != getHeight())
        {
            image = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
        }
        if (contentsHasChanged)
        {
            Graphics2D g2 = image.createGraphics();
            paintSomeNiftyThingsOn(g2);
            g2.dispose();
        }
        g.drawImage(image);
    }


    void setSomeValue(int n)
    {
        ....
        contentsHasChanged = true;
    }

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M eigene GUI Bibliothek erstellen. AWT, Swing, JavaFX & SWT 10
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
H MouseAdapter Klasse nutzen wenn eigene Klasse bereits von anderer erbt AWT, Swing, JavaFX & SWT 13
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
L JavaFX Eigene Font benutzen AWT, Swing, JavaFX & SWT 6
B Notepad++ in die eigene GUI einbinden AWT, Swing, JavaFX & SWT 7
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
M Eigene Klasse mit Grafikobjekten schreiben AWT, Swing, JavaFX & SWT 4
S JavaFX Drehen um eigene Achse AWT, Swing, JavaFX & SWT 2
P X extends TreeView - eigene Methoden AWT, Swing, JavaFX & SWT 5
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
L Eigene Component anordnen AWT, Swing, JavaFX & SWT 7
L JavaFX Eigene JavaFX Controls anlegen AWT, Swing, JavaFX & SWT 1
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
J Eigene Klasse auf Basis Textfield in SceneBuilder anzeigen AWT, Swing, JavaFX & SWT 4
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
G Event Handling Event Handling in eigene Klasse AWT, Swing, JavaFX & SWT 4
L Eigene JComponent in GridLayout AWT, Swing, JavaFX & SWT 9
A JavaFX Scene Builder eigene Klasse hinzufügen AWT, Swing, JavaFX & SWT 2
L Swing Wie programmiere ich eine eigene GUI? AWT, Swing, JavaFX & SWT 12
T Swing Eigene Konsole AWT, Swing, JavaFX & SWT 5
D Swing Eigene Tabelle AWT, Swing, JavaFX & SWT 18
M eigene horizontale Scrollbar AWT, Swing, JavaFX & SWT 1
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
C Swing MenuBar als eigene Klasse AWT, Swing, JavaFX & SWT 4
A Swing Eigene JComponent Scrollable AWT, Swing, JavaFX & SWT 6
Kenan89 3D Models aus anderen Spielen in eigene einfügen AWT, Swing, JavaFX & SWT 3
R SWT Eigene Events erstellen und werfen AWT, Swing, JavaFX & SWT 59
P Eigene CMD GUI zum Starten von JAR AWT, Swing, JavaFX & SWT 10
M Swing eigene Dialoge, aber wie genau? AWT, Swing, JavaFX & SWT 5
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
K 3D-Grafik Eigene "Kamera" AWT, Swing, JavaFX & SWT 2
T eigene Klasse für Panel AWT, Swing, JavaFX & SWT 9
S Swing Eigene Komponente (JPanel) soll ChangeEvents verteilen AWT, Swing, JavaFX & SWT 12
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
alderwaran Swing XML editor plugin für eigene anwendung AWT, Swing, JavaFX & SWT 2
P Swing Eigene Komponente Entwickeln - erben von JComponent oder JPanel? AWT, Swing, JavaFX & SWT 5
B Eigene Methoden in TABs einfügen AWT, Swing, JavaFX & SWT 8
R eigene Methoden für Buttons? AWT, Swing, JavaFX & SWT 11
H Swing Eigene Komponente wird nur halb oder komisch angezeigt AWT, Swing, JavaFX & SWT 3
H Swing Eigene Komponente reagiert falsch auf mouseClicked() AWT, Swing, JavaFX & SWT 5
T Eigene JComponent AWT, Swing, JavaFX & SWT 4
L Eigene Design Oberfläche erstellen AWT, Swing, JavaFX & SWT 3
1 Eigene Component in JScrollBar + fixe Linien??? AWT, Swing, JavaFX & SWT 2
T SWT eigene Komponenten AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18
A Eigene StatusBar AWT, Swing, JavaFX & SWT 2
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
S Eigene GUI Elemente erstellen AWT, Swing, JavaFX & SWT 6
D Eigene Methode soll Gerade zeichnen AWT, Swing, JavaFX & SWT 5
D Swing Eigene Komponente mit JSpinner AWT, Swing, JavaFX & SWT 4
MrMilti eigene Klasse in JTable ablegen AWT, Swing, JavaFX & SWT 12
R Swing JTable: Eigene Zeichnung im Header AWT, Swing, JavaFX & SWT 11
A Eigene Border für Buttons AWT, Swing, JavaFX & SWT 19
A Eigene Buttons AWT, Swing, JavaFX & SWT 20
C JTextPane HTML und eigene Tags AWT, Swing, JavaFX & SWT 10
S Eigene GUI (evt. Toolkit) AWT, Swing, JavaFX & SWT 10
M SWT: eigene Events AWT, Swing, JavaFX & SWT 9
& eigene Schriftart in JEditorpane AWT, Swing, JavaFX & SWT 2
T Eigene Fenster kreieren?zb. wie bei Winamp? AWT, Swing, JavaFX & SWT 9
D Eigene Component erstellen? AWT, Swing, JavaFX & SWT 4
M Eigene Klasse für mehrer JSplitPanes AWT, Swing, JavaFX & SWT 3
M Eigene Komponenten basteln AWT, Swing, JavaFX & SWT 25
O Eigene GUI Objekte entwerfen? AWT, Swing, JavaFX & SWT 3
A Eigene, sich selbst zeichnende Component AWT, Swing, JavaFX & SWT 5
S Eigene Komponenten AWT, Swing, JavaFX & SWT 2
T Eigene erweiterte MouseEvents nutzen AWT, Swing, JavaFX & SWT 2
M In eigene JPanel Klasse zeichnen AWT, Swing, JavaFX & SWT 4
M CellEditor und CellRenderer für eigene Klasse AWT, Swing, JavaFX & SWT 4
M eigene ComponentUI und Serializable AWT, Swing, JavaFX & SWT 3
E Eigene Steuerelemente bauen AWT, Swing, JavaFX & SWT 3
H eigene paintComponent(Graphics) kommt mit rezise nicht klar AWT, Swing, JavaFX & SWT 6
G fullscreen GUI - eigene components? AWT, Swing, JavaFX & SWT 2
T 4 db tabellen in einem karteireiter eigene klasse für die me AWT, Swing, JavaFX & SWT 7
S SWT Für jede gui komponente eigene methode AWT, Swing, JavaFX & SWT 2
J Eigene Fehlermeldung in AWT erzeugen AWT, Swing, JavaFX & SWT 2
D eigene SwingKonsole. AWT, Swing, JavaFX & SWT 5
I Eigene JComboBox AWT, Swing, JavaFX & SWT 10
C UIDefaults für eigene Klasse anpassen AWT, Swing, JavaFX & SWT 3
C ISelectionProvider und eigene Selections AWT, Swing, JavaFX & SWT 2
M kann man auch eigene look and feels machen? AWT, Swing, JavaFX & SWT 2
L eigene Komponente, ActionEvent senden? AWT, Swing, JavaFX & SWT 3
E Beim Schließen des Fensters eigene Funktion aufrufen AWT, Swing, JavaFX & SWT 8
M JTable mit JCombobox eigene Auswahl pro Zeile ? AWT, Swing, JavaFX & SWT 3
T JFrame - eigene Titelleiste AWT, Swing, JavaFX & SWT 8
Y Eigene Komponente einfügen AWT, Swing, JavaFX & SWT 6
G Eigene Koponente erstellen AWT, Swing, JavaFX & SWT 3
G Eigene Componente in jScrollView einbetten AWT, Swing, JavaFX & SWT 6
T Eigene grafische Oberfläche AWT, Swing, JavaFX & SWT 7
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben