Auswahl in GUI-Builder mit Grafiken ausstatten

ToterTag

Mitglied
Ich war dabei, ein Projekt in Java zu beginnen, als ich gestern über den GUI-Builder von Netbeans gestolpert bin. Einen Frame habe ich schon fertig designt, beim zweiten gibt es allerdings Probleme.

Am rechten Rand des Fensters will ich eine Auswahl einrichten. Man soll Auswahlpunkte auf und zu klappen können. Am Besten stelle ich einmal das vor, wie es perfekt wäre. Dann könnt ihr mir ja sagen, was nicht und was wie möglich ist.

Wie gesagt befindet sich die Auswahl rechts am Frame. Die Auswahl hat eine bestimmte Mindestbreite, so dass man keinen horizontalen Scrollbalken braucht. Dieser soll auch nicht gezeigt werden. Ein vertikaler Scrollbalken soll entweder immer eingeblendet sein, oder nur dann gezeigt werden, wenn er gebraucht wird. Welches der beiden Möglichkeiten später im Programm besser aussieht, weiß ich noch nicht. Wahrscheinlich aber, dass er nur gezeigt wird, wenn er benötigt wird. Wenn er dann gezeigt wird, soll er sich am rechten Rand der Auswahl befinden, das ist ja fast in jeder Anwendung so. Die Auswahl soll gegliedert sein. Man hat einen Menüpunkt "Menü1", darin befinden sich die Punkte "1-Näher1" bis "1-Näher3". Es gibt einen Menüpunkt "Menü2" mit dem weiter ausklappbaren Punkt "2-Näher1" und dem Auswahlpunkt "2-Näher2". "2-Näher1" beinhaltet 4 weitere Punkte. Dann gibt es noch einen Menüpunkt "Menü3", der 2 Unterpunkte hat. Ich könnte jetzt so meine ganze Liste durch machen, aber ich glaube, dass ich dann zu sehr nerven würde. Das, was ich bis her genannt habe, ist das, was ich will. Also das tiefste sind drei Ebenen.

Die ausklappbaren Punkte sollen immer möglichst weit oben sein, wenn dies ihr Status (eingeklappt oder ausgeklappt) und der der anderen Menüpunkte zulässt.

Ich möchte eigentlich jeden Menüpunkt so aufbauen: Links die Grafik (bei jedem Punkte eine andere), rechts ein Text (auch bei jedem ein anderer).

Inwiefern ist das in Java und auch in dem GUI-Builder möglich?

Ich danke für jeden Tipp und Hinweis.
 

André Uhres

Top Contributor
Da müssen wir wohl viel von Hand machen. Versuch's mal mit einem JTree (in einem JScrollPane). Die JScrollPane Properties kannst du auf HORIZONTAL_SCROLLBAR_NEVER und VERTICAL_SCROLLBAR_ALWAYS setzen. JTree können wir erweitern und getPreferredSize überschreiben:
Java:
jTree1 = new JTree() {

    @Override
    public Dimension getPreferredSize() {
        Dimension preferredSize = super.getPreferredSize();
        preferredSize.width = 150;
        return preferredSize;
    }
};
Dazu brauchst du sicher noch einen eigenen TreeCellRenderer wegen der Icons. Text und Icon könntest du in einer eigene Klasse unterbringen.

Gruß,
André
 

ToterTag

Mitglied
Mit JTree habe ich es schon versucht. Beim 2. Hauptmenüpunkt hat er mir aber "root" als allgemeinen Hauptmenüpunkt rein gehauen. Das macht 1. keinen Sinn und sieht 2. nicht gut aus.

Außerdem kann ich in den JTree keine Grafiken einsetzen.
 

André Uhres

Top Contributor
Mit JTree habe ich es schon versucht. Beim 2. Hauptmenüpunkt hat er mir aber "root" als allgemeinen Hauptmenüpunkt rein gehauen. Das macht 1. keinen Sinn und sieht 2. nicht gut aus.

Außerdem kann ich in den JTree keine Grafiken einsetzen.

Benutz die Methode "tree.setRootVisible(false)" um den root auszublenden und die Methode "tree.setShowsRootHandles(true)" um die "root handles" anzuzeigen, falls du das möchtest. Grafiken lassen sich über einen "TreeCellRenderer" einfügen. Wenn der Renderer ein JLabel ist (default), können wir einfach die Methode JLabel#setIcon(..) benutzen.

Gruß,
André
 

André Uhres

Top Contributor
Hier noch ein kleines Beispiel:
Java:
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;

public class TreeDemo {

    private final JFrame window;
    private final JTree tree;
    private final JScrollPane scrollpane;
    private final DefaultTreeModel model;
    private final DefaultMutableTreeNode root;

    public TreeDemo() {
        window = new JFrame("TreeDemo");
        window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        window.setSize(400, 200);
        window.setLocationRelativeTo(null);
        root = new DefaultMutableTreeNode(new MyUserObject("root", null));
        model = new DefaultTreeModel(root);
        tree = new JTree(model) {

            @Override
            public Dimension getPreferredSize() {
                Dimension preferredSize = super.getPreferredSize();
                preferredSize.width = 200;
                return preferredSize;
            }
        };
        scrollpane = new JScrollPane(tree);
        scrollpane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        scrollpane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        window.getContentPane().add(scrollpane, BorderLayout.LINE_END);
        fillDemoTree();
        tree.expandRow(0);
        tree.setCellRenderer(new MyTreeCellRenderer());
        tree.setRootVisible(false);
        tree.setShowsRootHandles(true);
    }

    private void fillDemoTree() {
        DefaultMutableTreeNode folder1 = new DefaultMutableTreeNode(new MyUserObject("folder1", null));
        DefaultMutableTreeNode leaf1 = new DefaultMutableTreeNode(new MyUserObject("leaf1", new MyIcon(Color.CYAN)));
        DefaultMutableTreeNode folder2 = new DefaultMutableTreeNode(new MyUserObject("folder2", null));
        int i = 0;
        model.insertNodeInto(folder1, root, i++);
        model.insertNodeInto(folder2, root, i++);
        model.insertNodeInto(leaf1, folder1, 0);
    }

    private void setVisible(final boolean b) {
        window.setVisible(b);
    }

    public static void main(final String args[]) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new TreeDemo().setVisible(true);
            }
        });
    }
}

class MyUserObject {

    private final String text;
    private final Icon icon;

    public MyUserObject(final String text, final Icon icon) {
        this.text = text;
        this.icon = icon;
    }

    public Icon getIcon() {
        return icon;
    }

    public String getText() {
        return text;
    }

    @Override
    public String toString() {
        return text;
    }
}

class MyTreeCellRenderer extends JLabel implements TreeCellRenderer {

    @Override
    public Component getTreeCellRendererComponent(final JTree tree, final Object value,
            final boolean selected, final boolean expanded,
            final boolean leaf, final int row, final boolean hasFocus) {
        MyUserObject us = (MyUserObject) ((DefaultMutableTreeNode) value).getUserObject();
        Icon icon = us.getIcon();
        if (icon == null) {
            icon = UIManager.getIcon("Tree.closedIcon");
        }
        setIcon(icon);
        setText(value.toString());
        return this;
    }
}

class MyIcon implements Icon {

    private final Color color;

    public MyIcon(final Color color) {
        this.color = color;
    }

    @Override
    public void paintIcon(final Component c, final Graphics g, final int x, final int y) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setColor(color);
        g.fillOval(0, 1, 16, 14);
        g.setColor(Color.BLACK);
        g.drawOval(0, 1, 16, 14);
        g.drawOval(4, 5, 3, 2);
        g.drawOval(9, 5, 3, 2);
        g.drawArc(4,8,8,4,0,-180);
    }

    @Override
    public int getIconWidth() {
        return 16;
    }

    @Override
    public int getIconHeight() {
        return 16;
    }
}

Gruß,
André
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
R Auswahl mehrerer JComboBoxen verknüpfne AWT, Swing, JavaFX & SWT 17
P JavaFX aktuelle Tabellenzeile bei Choice-Box-Auswahl in Zelle ermitteln AWT, Swing, JavaFX & SWT 28
B Mit der ChoiceBox-Auswahl Textfelder hinzufügen AWT, Swing, JavaFX & SWT 18
S n aus m - Auswahl AWT, Swing, JavaFX & SWT 2
M Swing JList Auswahl-GUI-Konzept AWT, Swing, JavaFX & SWT 9
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
F JavaFX ChoiceBox Name als Auswahl bei einer Objektliste AWT, Swing, JavaFX & SWT 4
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
M Combo Box auswahl in eine Datenbank speichern AWT, Swing, JavaFX & SWT 1
M JavaFX Combobox - Item Auswahl mit Tasten AWT, Swing, JavaFX & SWT 8
S JComboBox nach auswahl erneuern AWT, Swing, JavaFX & SWT 4
A Swing bei Auswahl und klick eines JComboBox buttons die Klasse eines anderen Projekts aufrufen AWT, Swing, JavaFX & SWT 3
T Importer-Auswahl im JFileChooser AWT, Swing, JavaFX & SWT 3
J AWT choice mit viel Auswahl aktualisiert sich nicht korrekt beim scrollen?! AWT, Swing, JavaFX & SWT 3
I Anhand ButtonGroup eine Auswahl treffen AWT, Swing, JavaFX & SWT 2
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
M JComboBox Item-Auswahl in JTable AWT, Swing, JavaFX & SWT 2
M SWT Wie mehr als 5000 Einträge zur Auswahl geben? AWT, Swing, JavaFX & SWT 9
G JComboBox mit CellRenderer (Auswahl) AWT, Swing, JavaFX & SWT 11
N automatische Auswahl einer JComboBox AWT, Swing, JavaFX & SWT 6
E JTree Auswahl AWT, Swing, JavaFX & SWT 2
P Swing Auswahl einer JComboBox für eine andere JComboBox übernehmen AWT, Swing, JavaFX & SWT 4
R JPanel wird erst neu gezeichnet nach erneuter auswahl AWT, Swing, JavaFX & SWT 8
F Swing Auf JComboBox-Event erst NACH Auswahl reagieren AWT, Swing, JavaFX & SWT 8
M Swing jList Auswahl löschen AWT, Swing, JavaFX & SWT 2
H JTree - nach Auswahl aus JFileChooser wird nur der erste Knoten angezeigt AWT, Swing, JavaFX & SWT 3
U JComboBox: (Vor)auswahl nach Aktualisierung AWT, Swing, JavaFX & SWT 2
Semox Swing JMenuItem-Auswahl mit Aktion ausführen AWT, Swing, JavaFX & SWT 4
C Welche Farbe hat die Auswahl in einer JTable? AWT, Swing, JavaFX & SWT 2
M SWT Wie Textfeld hinzufügen, nach Auswahl von einem bestimmten Combobox-item? AWT, Swing, JavaFX & SWT 3
S Swing JTable Auswahl mehrerer Zellen mit STRG+Maus AWT, Swing, JavaFX & SWT 3
P verschiedene JPanels einblenden je nach auswahl AWT, Swing, JavaFX & SWT 2
P Speichern und Auswahl gezeichneter Objekte AWT, Swing, JavaFX & SWT 7
K Auswahl einer ButtonGroup erfahren AWT, Swing, JavaFX & SWT 3
G JTextfield Inhalt markieren bei Auswahl AWT, Swing, JavaFX & SWT 2
H Auswahl in JComboBox abbrechen AWT, Swing, JavaFX & SWT 5
K Choice auswahl und String in Int AWT, Swing, JavaFX & SWT 8
DEvent Standard Font-Auswahl-Dialog? AWT, Swing, JavaFX & SWT 15
DEvent Je nach Auswahl in Liste entsprechende Input-Elemente anzeig AWT, Swing, JavaFX & SWT 2
B Relative Pfadangaben beibehalten bei Auswahl in Dialog AWT, Swing, JavaFX & SWT 2
E JComboBox auswahl einschraenken AWT, Swing, JavaFX & SWT 5
G Screen nach Auswahl schließen und neuen öffnen?wie mach ichs AWT, Swing, JavaFX & SWT 8
M JTable mit JCombobox eigene Auswahl pro Zeile ? AWT, Swing, JavaFX & SWT 3
M Farb/bild auswahl AWT, Swing, JavaFX & SWT 15
C Aktion nach Auswahl einer Checkbox AWT, Swing, JavaFX & SWT 6
R Verzeichnis-Auswahl mit FileDialog ? AWT, Swing, JavaFX & SWT 3
G JComboBox nimmt Auswahl nicht an AWT, Swing, JavaFX & SWT 5
N JList: Auswahl erzwingen AWT, Swing, JavaFX & SWT 6
H Doppelte Auswahl bei ItemEvent für eine Dropdownliste AWT, Swing, JavaFX & SWT 5
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
N JavaFX Einfacher Taschenrechner mit Scene Builder und Java FX AWT, Swing, JavaFX & SWT 0
B Scene Builder Textfeld Begrenzen AWT, Swing, JavaFX & SWT 3
I Scene Builder - mehrere Seiten AWT, Swing, JavaFX & SWT 6
J JavaFX Schiffe versenken mit JavaFX und Scene builder AWT, Swing, JavaFX & SWT 3
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
izoards Scene Builder vs. reality..... AWT, Swing, JavaFX & SWT 8
H JavaFX JavaFX - Scene Builder - BorderPane AWT, Swing, JavaFX & SWT 23
ruutaiokwu SWT "Google Window Builder" tut keine jar's ins Projekt rein bei SWT-Projekt AWT, Swing, JavaFX & SWT 22
S Scene Builder Fehlermeldung (Anfängerprobleme) AWT, Swing, JavaFX & SWT 0
S Scene Builder Fehlermeldung (Anfängerprobleme) AWT, Swing, JavaFX & SWT 8
R JavaFX Scene Builder Grundsätzliches AWT, Swing, JavaFX & SWT 6
S JavaFX Unterschiede zwischen Scene Builder 2.0 und der ausgeführten App AWT, Swing, JavaFX & SWT 17
S Window Builder AWT, Swing, JavaFX & SWT 20
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B JavaFX Grundlegende Verständnisfrage JavaFX<->Scene Builder AWT, Swing, JavaFX & SWT 12
D Gluon Scene Builder Custom AWT, Swing, JavaFX & SWT 0
L JavaFX GUI mit JavaFX. Scene Builder source code? AWT, Swing, JavaFX & SWT 6
Z Window Builder - Labels mit setText befüllen AWT, Swing, JavaFX & SWT 11
n00b4u JavaFX Scene-Builder Ressourcengrab? AWT, Swing, JavaFX & SWT 0
I Scene Builder kann .fxml nicht mehr laden AWT, Swing, JavaFX & SWT 3
EisKaffee Swing Window Builder installieren AWT, Swing, JavaFX & SWT 1
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
B JavaFX Scene Builder: resize funktioniert (meist) nicht AWT, Swing, JavaFX & SWT 6
M JavaFX Wo finde ich den Scene Builder? AWT, Swing, JavaFX & SWT 3
A JavaFX Scene Builder eigene Klasse hinzufügen AWT, Swing, JavaFX & SWT 2
F JavaFX Scene Builder AWT, Swing, JavaFX & SWT 2
F JavaFX Scene Builder AWT, Swing, JavaFX & SWT 3
D JavaFX Scene Builder 2.0 einfügen einer CheckBoxListCell AWT, Swing, JavaFX & SWT 0
M JavaFX Fenstersteuerung in scene builder AWT, Swing, JavaFX & SWT 2
N JavaFX TreeTable Scene Builder AWT, Swing, JavaFX & SWT 8
M NetBeans Swing GUI Builder AWT, Swing, JavaFX & SWT 2
F GUI Einstieg (Scene Builder) AWT, Swing, JavaFX & SWT 3
H JavaFx - Scene Builder 2.0 - Classpath AWT, Swing, JavaFX & SWT 2
S GUI Entwicklung: GUI Builder oder doch lieber händisch? AWT, Swing, JavaFX & SWT 17
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
J Gibt es brauchbare GUI-Builder, oder doch besser alles per Hand machen? AWT, Swing, JavaFX & SWT 6
T Kleinen "Gui Builder" programmieren AWT, Swing, JavaFX & SWT 12
S NetBeans GUI Builder - Code-Platzierung AWT, Swing, JavaFX & SWT 3
M GUI-Programmierung - GUI-Builder oder eigenständig? AWT, Swing, JavaFX & SWT 16
M Swing In GUI-Builder-JFrame mit Menü Schreiben und Zeichnen AWT, Swing, JavaFX & SWT 4
J Swing Window-Builder-Projekt richtig übertragen AWT, Swing, JavaFX & SWT 2
H Swing Google Window-Builder AWT, Swing, JavaFX & SWT 4
H JTabedPane in GUI-Builder AWT, Swing, JavaFX & SWT 7
D SWT CheckBox auslesen (Window Builder Pro) AWT, Swing, JavaFX & SWT 2
G Grafische Oberflächen mit Java - GUI Builder oder von Hand? AWT, Swing, JavaFX & SWT 19
L Gui-Builder AWT, Swing, JavaFX & SWT 3
D Netbeans GUI-Builder Darstellungsprobleme AWT, Swing, JavaFX & SWT 2
T SWT Window Builder Pro File Dialog anzeigen AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben