Auswahlmenü mit JButtons

HackerBanane

Mitglied
Hallo nochmals!
Ich bin gerade noch für meine Brüder dabei ein Spiel zu programmieren und bin auch schon fast fertig.
Um ein bisschen abwechselung ins Spiel zu bekommen habe ich vor ein Auswahlmenü zu erstellen, mit dem man
die Skins wechseln kann.
Das ganze soll ungefähr so aussehen:
Man hat in der mitte einen JButton, auf dem der Skinname steht und links und rechts vom Fenster sind Pfeile die nach links bzw. rechts zeigen, mit denen man das menü "durchblättern" kann. Also wenn man den Pfeil nach links drückt wechselt die Auswahl an Skins nach links und umgekehrt, wie wenn man mit dem Mausrad durch den Browser scrollt.
Wie mach ich das ganze?
LG
Laurens
 

mihe7

Top Contributor
Skizze (quick & dirty):

Java:
import java.awt.BorderLayout;
import javax.swing.*;

public class Test {
    interface Skin {
        String getName();
        default void activate() {
            System.out.println("Activated " + getName());
        }
    }

    Skin[] skins;
    int current = 0;

    JButton skinButton;

    public Test() {
        skins = new Skin[5];
        for (int i = 0; i < skins.length; i++) {
            final String name = "Skin " + (i+1);
            skins[i] = new Skin() {
                public String getName() { return name; }
            };
        }
    }

    void nextSkin() {
        current = (current+1) % skins.length;
        display();
    }

    void prevSkin() {
        current = (skins.length + current - 1) % skins.length;
        display();
    }

    void display() {
        skinButton.setText(skins[current].getName());
    }

    public void run() {
        skinButton = new JButton();
        skinButton.addActionListener(e -> skins[current].activate());
        display();

        JButton prev = new JButton("<");
        prev.addActionListener(e -> prevSkin());
        JButton next = new JButton(">");
        next.addActionListener(e -> nextSkin());

        JPanel panel = new JPanel(new BorderLayout());
        panel.add(prev, BorderLayout.WEST);
        panel.add(next, BorderLayout.EAST);
        panel.add(skinButton);

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(panel, BorderLayout.NORTH);
        frame.setSize(400, 200);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().run());
    }
}
 

HackerBanane

Mitglied
Vielen Dank, aber kannst du mir bitte ein paar Kommentare hinzufügen?
Ich bin noch net so lange am Java lernen und kann das nur lernen, wenn ich alles verstehe ;)
Außerdem muss ich das irgendwie in mein Programm übertragen können.
 

mihe7

Top Contributor
Das Interface Skin ist einfach nur ein Dummy - ich weiß ja nicht, wie Du das realisiert hast. Wenn Du einfach nur Strings hast, kannst Du auch einfach String verwenden.

Zeile 12 ist ein Array, das alle möglichen Skins enthält (wird hier im Konstruktor von Test initialisiert, das ist aber nebensächlich). Zeile 13 ist ein Index, mit dem man sich das aktuell gewählte Skin merkt. Die Methoden prevSkin() und nextSkin() verändern nun einfach den Index in eine Richtung und aktualisieren anschließend mit dem display()-Aufruf den Button, der den Namen des Skins anzeigt.

Und dann wären wir auch schon beim UI: skinButton -> der Button, der den Namen des Skins anzeigt (und beim Klick dummymäßig das Skin aktiviert). Außerdem einen prev- und einen next-Button, die die Methoden prevSkin() bzw. nextSkin() aufrufen.

Mehr ist das nicht.
 

White_Fox

Top Contributor
Du könntest eine weitere CSS-Datei erstellen (sowas liegt auch im Internet herum) und einfach eine neue CSS laden. Das/ein ähnliches Problem hatte ich erst neulich hier:


Edit:
Hier gibt es z.B. ein dunkles Farbthema:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JTextField Auswahlmenü AWT, Swing, JavaFX & SWT 15
jojoge wie kann ich in eine Benennung eines JButtons eine Variable einbauen? AWT, Swing, JavaFX & SWT 6
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
H JButtons werden nicht angezeigt AWT, Swing, JavaFX & SWT 5
A Swing Meine JButtons werden nicht angezeigt bitte helft mir AWT, Swing, JavaFX & SWT 2
N "Automatisches" erstellen von jButtons AWT, Swing, JavaFX & SWT 1
F JButtons neu laden AWT, Swing, JavaFX & SWT 4
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
S JButtons an Koordinaten setzen AWT, Swing, JavaFX & SWT 3
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
M Swing Selbstanordnende JButtons AWT, Swing, JavaFX & SWT 4
J EventHandler Bei JButtons AWT, Swing, JavaFX & SWT 2
L Swing Variable Anzahl an JButtons AWT, Swing, JavaFX & SWT 7
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
A JTextField und JButtons AWT, Swing, JavaFX & SWT 2
F JButtons erstellen lassen mit unterschiedlichen Funktionen AWT, Swing, JavaFX & SWT 3
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
Kenan89 LayoutManager JPanel wächst beim adden neuer JButtons nicht mit AWT, Swing, JavaFX & SWT 4
A JButtons - es wird beim falschen Button die Hintergrundfarbe angepasst AWT, Swing, JavaFX & SWT 2
Z kleine JButtons und ihre Beschriftung AWT, Swing, JavaFX & SWT 5
K Swing Abgerundete JButtons AWT, Swing, JavaFX & SWT 8
Tsuna JButtons in Apple-Design AWT, Swing, JavaFX & SWT 4
J JButtons in aktivieren und deaktivieren AWT, Swing, JavaFX & SWT 3
T JButtons indexiert unter NetBeans anlegen AWT, Swing, JavaFX & SWT 7
H JButtons in JTable anzeigen AWT, Swing, JavaFX & SWT 5
T Maximale Länge eines JButtons AWT, Swing, JavaFX & SWT 5
K JButtons innerhalb eines JPanels verschieben (DRAG&DROP) AWT, Swing, JavaFX & SWT 5
R Swing Verschieben eines jButtons mittels MouseDragged AWT, Swing, JavaFX & SWT 4
K Runde JButtons ? AWT, Swing, JavaFX & SWT 7
B Swing JButtons in eine Arraylist<JButton> einfügen AWT, Swing, JavaFX & SWT 2
G Swing JButtons + ActionListener + final AWT, Swing, JavaFX & SWT 3
U Problem mit JButtons AWT, Swing, JavaFX & SWT 6
C Interface für JButtons,... AWT, Swing, JavaFX & SWT 7
J Swing JButtons und die ActionEvents AWT, Swing, JavaFX & SWT 2
P JButtons haben nicht immer lust zu erscheinen AWT, Swing, JavaFX & SWT 9
U Grafikkontext unter JButtons? AWT, Swing, JavaFX & SWT 5
Strahlungsleck Funktionalität von JButtons (Actionlistener etc.) AWT, Swing, JavaFX & SWT 17
G Sehr kleine JButtons mit Icon oder Beschriftung AWT, Swing, JavaFX & SWT 2
F Sender für jButtons? AWT, Swing, JavaFX & SWT 2
M ich will die alten "alte JButtons"wieder haben AWT, Swing, JavaFX & SWT 6
J JButtons in Tabellenspalten anzeigen AWT, Swing, JavaFX & SWT 2
J JScrollBar scroll-Verhalten auf 2 JButtons umleiten? AWT, Swing, JavaFX & SWT 2
N Minesweeper: 2D Feld von JButtons anlegen AWT, Swing, JavaFX & SWT 19
F Wie Oberfläche verbessern? (JButtons, Textfeld verkleinern) AWT, Swing, JavaFX & SWT 5
U Bilder, JLabels, JButtons voreinander AWT, Swing, JavaFX & SWT 7
D Darstellungsprobleme bei JButtons auf JInternalFrames AWT, Swing, JavaFX & SWT 4
A Hintergrundfrabe eines JButtons innerhalb eines JToolBar AWT, Swing, JavaFX & SWT 4
T Ausrichtung eines Jbuttons AWT, Swing, JavaFX & SWT 6
S JButtons Größe AWT, Swing, JavaFX & SWT 15
M JButtons immer gleiche Größe? AWT, Swing, JavaFX & SWT 8
H Unsichtbare JButtons? AWT, Swing, JavaFX & SWT 5
C JComboBox mit JButtons befüllen AWT, Swing, JavaFX & SWT 8
1 Warum sind JButtons viel breiter als der enthaltene Text ? AWT, Swing, JavaFX & SWT 4
S Text eines JButtons vertikal schreiben AWT, Swing, JavaFX & SWT 5
L-ectron-X Den Text eines JButtons unter das Icon setzen? AWT, Swing, JavaFX & SWT 2
M JButtons in JScrollPanel darstellen AWT, Swing, JavaFX & SWT 6
S JButtons in einem JPanel erscheinen nicht direkt AWT, Swing, JavaFX & SWT 7
G von JButtons erben, aber richtig! AWT, Swing, JavaFX & SWT 4
R JButtons werden nicht dargestellt AWT, Swing, JavaFX & SWT 7
G JButtons AWT, Swing, JavaFX & SWT 7
Z Problem mit Spielfläche aus JButtons AWT, Swing, JavaFX & SWT 2
H große mengen an jbuttons dynamisch erzeugen? AWT, Swing, JavaFX & SWT 15
G Icon eines JButtons ändern? AWT, Swing, JavaFX & SWT 7
M JButtons mit Linie verbinden AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben