JItem während der Programmlaufzeit verändern

Hein_nieH

Bekanntes Mitglied
Hallo,

Ich möchte in einer JToolbar ein JItem nachträglich ändern.
Irgendwie stelle ich mich da wohl zu blöd an.

Hat jemand zufällig einen Codeschnipsel von einem funktionierenden Beispiel parat?
Ich will versuchen den Fehler herauszufinden.

Gruss Hein_nieH
 

Blender3D

Top Contributor
Hallo,

Ich möchte in einer JToolbar ein JItem nachträglich ändern.
Irgendwie stelle ich mich da wohl zu blöd an.

Hat jemand zufällig einen Codeschnipsel von einem funktionierenden Beispiel parat?
Ich will versuchen den Fehler herauszufinden.
Vielleicht hilft Dir das weiter. Kopieren und probieren.
Java:
import javax.swing.JFrame;

public class StartToolbar {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Click on a button");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new ToolbarPanel(530, 100));
        frame.pack();
        frame.setVisible(true);
    }
}
Java:
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.border.BevelBorder;

@SuppressWarnings("serial")
public class ToolbarPanel extends JPanel {
    private JToolBar toolBarA = new JToolBar();
    private JToolBar toolBarB = new JToolBar();

    public ToolbarPanel(int width, int height) {
        setPreferredSize(new Dimension(width, height));
        create(width, height);
    }

    private void create(int width, int height) {
        for (char c = 'A'; c < 'Z'; c++) {
            JButton b = new JButton("" + c);
            toolBarA.add(b);
            b.addMouseListener(getButtonMouse());
        }
        add(toolBarA);
        add(toolBarB);
        toolBarA.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
        toolBarB.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
        int off = 5;
        int w = (width - 2 * off);
        int h = (height - 3 * off) / 2;
        toolBarA.setPreferredSize(new Dimension(w, h));
        toolBarB.setPreferredSize(new Dimension(w, h));
    }

    private MouseListener getButtonMouse() {
        return new MouseAdapter() {
            @Override
            public void mouseReleased(MouseEvent e) {
                Object src = e.getSource();
                if (!(src instanceof JButton))
                    return;
                JButton button = (JButton) src;
                src = button.getParent();
                if (src == toolBarA) {
                    toolBarA.remove(button);
                    toolBarB.add(button);
                } else if (src == toolBarB) {
                    toolBarB.remove(button);
                    toolBarA.add(button);
                }
                toolBarB.revalidate();
                toolBarA.revalidate();           
            }
        };
    }

}
 

Hein_nieH

Bekanntes Mitglied
Hallo Blender3D,

danke für die Zusendung die Hilfestellung.
Ich hoffe dass ich am Wochenende an meinem Projekt weitermachen kann.
Ich gebe dann Rauchzeichen ... :)

Gruss Hein_nieH
 

Hein_nieH

Bekanntes Mitglied
Moinsen,

Ich habe das Beispiel mir angesehen und konnte damit mein kleines Projekt verbessern.

Nun habe ich noch eine Blöde Frage.
Kann ich zur Laufzeit eine JMenubar in einem JFrame auswechseln?

folgendes habe ich probiert
JFrame frame = new JFrame();
JMenuBar mBar1 = getJMenueBar1();
JMenuBar mBar2 = getJMenueBar2();

frame.setJMenuBar(mBar1);
frame.pack();
....
frame.setJMenuBar(mBar2); //hier hängt das Programm sich auf bzw. die mBar1 bleibt sichtbar und reagiert nicht mehr

Hat jemand eine Lösungsidee?

Gruss Hein_nieH
 

KonradN

Super-Moderator
Mitarbeiter
Also prinzipiell sollte das so gehen. Arbeitest Du mit Threads? Bist Du evtl. auf einem anderen Thread als dem EDT?
 

Hein_nieH

Bekanntes Mitglied
Hallo,

der Wechsel des JMenuBars erfolgt innerhalb eines ActionListeners (also in einem Thread).

Das Komando frame.setJMenuBar(mBar2) funktioniert jetzt (war ein Flüchtigkeitsfehler).
Allerdings wird immer noch mBar1 angezeigt.
Ich habe auch schon frame.revalidate versucht. Das brachte aber auch keinen Erfolg.

Gruss Hein_nieH
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
revalidate ist auch nicht für das neumalen zuständig. Da wäre der repaint notwendig.

Revalidate sagt dem Layout Manager, dass das Layout neu berechnet werden soll.
Repaint sagt, dass das Fenster neu gemalt werden soll.
 

Hein_nieH

Bekanntes Mitglied
Moinsen,

Problem ist gelöst. Es lag nicht an der Funktion frame.setJMenuBar(...);

Es lag am Aufbau des JMenuBar via Singleton Class.

Gruss Hein_nieH
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Probleme mit Event auf JItem AWT, Swing, JavaFX & SWT 5
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
M JavaFX Absoluter Fokus während drag Event AWT, Swing, JavaFX & SWT 10
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
T Timer und GIF Animationen pausieren während Maus sich bewegt AWT, Swing, JavaFX & SWT 4
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
B 3D-Grafik Java 3D Licht während Laufzeit ändern AWT, Swing, JavaFX & SWT 0
Joew0815 Dropdown meue während der Laufzeit ändern. AWT, Swing, JavaFX & SWT 6
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
H jprogressbar während datenabfrage anzeigen AWT, Swing, JavaFX & SWT 5
B ProgressBar während Berechnung AWT, Swing, JavaFX & SWT 4
M Swing JList Item in andere JList während Ausführung AWT, Swing, JavaFX & SWT 4
M JLabel aktualsisieren während Verarbeitung AWT, Swing, JavaFX & SWT 12
E Buttons während einer Berechnung deaktivieren AWT, Swing, JavaFX & SWT 6
D JTable Mausevents, während editiert wird AWT, Swing, JavaFX & SWT 5
T Swing JFrame blockieren während anderes JFrame offen ist AWT, Swing, JavaFX & SWT 2
R Wie Vorgehen bei fundamentaler Veränderung des Layouts während des Programmablaufs? AWT, Swing, JavaFX & SWT 19
S Programm pausieren während JDialog offen ist AWT, Swing, JavaFX & SWT 2
X Tabelle während Funktionsaufruf aktualisieren AWT, Swing, JavaFX & SWT 11
S Swing JTextArea während der Laufzeit füllen AWT, Swing, JavaFX & SWT 5
J Lazy Loading eine JTree während Scrollen AWT, Swing, JavaFX & SWT 11
R GUI hängt während Programm läuft AWT, Swing, JavaFX & SWT 7
P repaint während Thread läuft AWT, Swing, JavaFX & SWT 9
S Swing Während Frame verschoben wird... AWT, Swing, JavaFX & SWT 2
C keine weiteren Events während Drag&Drop Operation möglich? AWT, Swing, JavaFX & SWT 5
T Swing Dialoginhalt automatisch anpassen während Größenänderung AWT, Swing, JavaFX & SWT 2
D Swing Anzeige während eines Ladevorganges AWT, Swing, JavaFX & SWT 6
O Swing es können keine neuen Labels hinzufügt werden während der Timer läuft AWT, Swing, JavaFX & SWT 14
S Java3D: Alle Objekte in BranchGroup löschen während Laufzeit AWT, Swing, JavaFX & SWT 3
D JTable während edit kein update machen lassen AWT, Swing, JavaFX & SWT 2
M SWT Mutter-Shell blocken während Tochter-Shell noch offen ist AWT, Swing, JavaFX & SWT 6
S Swing DnD: Image während Drag-Operation ändern AWT, Swing, JavaFX & SWT 3
M Swing JTable während Laufzeit beschreiben AWT, Swing, JavaFX & SWT 14
S Objekt wird während Endlosschleife nur einmal bewegt AWT, Swing, JavaFX & SWT 2
O Zeichnene auf ein Jpanel während der Laufzeit des Programms AWT, Swing, JavaFX & SWT 2
J GUI (JTable) während Rekursion aktualisieren AWT, Swing, JavaFX & SWT 4
M Erzeugen von Komponenten während der Laufzeit AWT, Swing, JavaFX & SWT 6
S Methode während ihrer Laufzeit abbrechen AWT, Swing, JavaFX & SWT 6
P GUI-Updaten während eines externen Prozesses AWT, Swing, JavaFX & SWT 2
C jComboBox während eingabe kontextabhängig vorausfüllen AWT, Swing, JavaFX & SWT 3
DeeDee0815 LookAndFeel während der Laufzeit verstellen AWT, Swing, JavaFX & SWT 4
G Wie Fenstergröße während Fenstergrößenänderung auslesen? AWT, Swing, JavaFX & SWT 2
F Aktualisierung während MOUSE_PRESSED AWT, Swing, JavaFX & SWT 4
D Widget/Control während Laufzeit durch ein anderes ersetzen AWT, Swing, JavaFX & SWT 3
E JTable-während der Einfügezeit der Zellen in die Table AWT, Swing, JavaFX & SWT 2
B JButton während der Laufzeit in JLabel umwandeln AWT, Swing, JavaFX & SWT 3
P JTextArea veränder Größe während Laufzeit; GridBagLayout AWT, Swing, JavaFX & SWT 8
Redfrettchen JTextArea während einer DocumentListener Notification ändern AWT, Swing, JavaFX & SWT 5
D JComponets während der Laufzeit in ein Panel einfügen AWT, Swing, JavaFX & SWT 2
Y Aktion während gedrückter Taste AWT, Swing, JavaFX & SWT 2
K Syntaxhighlight während der Texteingabe AWT, Swing, JavaFX & SWT 11
B Kein Repaint während eines Prozesses. AWT, Swing, JavaFX & SWT 5
D JTable Header während Laufzeit ändern. AWT, Swing, JavaFX & SWT 3
L JTable - Button Speichern während des Editieren AWT, Swing, JavaFX & SWT 3
S LaF - switcht erst während des Runs auf System.LaF AWT, Swing, JavaFX & SWT 2
M während der Roboter arbeitet sollte man sich raushalten. AWT, Swing, JavaFX & SWT 6
m@nu Dialog während warten anzeigen AWT, Swing, JavaFX & SWT 3
M GUI Update während der Verarbeitung einer Methode AWT, Swing, JavaFX & SWT 3
G Textfeldgröße während Eingabe ändern AWT, Swing, JavaFX & SWT 4
M In einem JFrame Menüs & . während der Laufzeit verändern AWT, Swing, JavaFX & SWT 6
L Constraints während der Laufzeit verändern AWT, Swing, JavaFX & SWT 7
D JTable Spalten mit Namen während der Programmlaufzeit hinzuf AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben