Unterbuttons einbinden

jorgeHX

Erfahrenes Mitglied
Hallo Leute,
ich habe da mal ne kurze Frage. Wie kann ich denn in Java Unterbuttons einbinden. Ich wollte so ein kleines eigenes Zeichenprogramm proggen, wo ich verschiedene Werkzeuge pro Button haben will. (in etwa so wie in jedem Zeichenprogramm). Wenn ich dann auf den Button klicke, soll sich so ein kleines Untermenü öffenen, wo ich dann meine Sub-Buttons aussuchen kann...

Hat da jemand ein Idee?

Vielen Dank,
JP
 
Hallo!

Schau mal hier: (Image im JMenu)
Java:
/**
 * 
 */
package de.tutorials;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

/**
 * @author Tom
 * 
 */
public class SubMenuExample extends JFrame {

    public SubMenuExample() {
        super("SubMenuExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        setJMenuBar(createJMenuBar());

        pack();
        setVisible(true);
    }

    private JMenuBar createJMenuBar() {

        JMenuBar menuBar = new JMenuBar();

        JMenu menu = new JMenu();
        menu.setIcon(new ImageIcon("c:/run.jpg"));
        menu.add(new JMenuItem("ItemA"));
        menu.add(new JMenuItem("ItemB"));
        menu.add(new JMenuItem("ItemC"));

        menuBar.add(menu);

        return menuBar;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new SubMenuExample();
    }
}

Gruß Tom
 
Hallo,

Na klar..
Java:
        JMenu menu = new JMenu();
        menu.setIcon(new ImageIcon("c:/run.jpg"));
        menu.add(new JMenuItem(new ImageIcon("c:/run.jpg")));
        menu.add(new JMenuItem("ItemB",new ImageIcon("c:/run.jpg")));
        menu.add(new JMenuItem("ItemC"));

Gruß Tom
 
Sehr cool, noch eine letzte doofe Frage. Ich will die Grafiken nicht nur unterneinander, sondern in einer z.b. 3*2 tabelle anordnen.

Geht das auch?

Danke und dir noch ein schönes WE,
JP
 
Hallo!

Danke, wünsche auch ein schönes Restwochenende ;-)

Java:
/**
 * 
 */
package de.tutorials;

import java.awt.GridLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

/**
 * @author Tom
 * 
 */
public class SubMenuExample extends JFrame {

    public SubMenuExample() {
        super("SubMenuExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        setJMenuBar(createJMenuBar());

        pack();
        setVisible(true);
    }

    private JMenuBar createJMenuBar() {

        JMenuBar menuBar = new JMenuBar();

        JPanel dummyActionPanel = createDummyActionPanel("Save");

        JMenu menu = new JMenu();
        menu.setIcon(new ImageIcon("c:/run.jpg"));
        menu.add(createDummyActionPanel("save"));
        menu.add(createDummyActionPanel("load"));
        menu.add(new JMenuItem(new ImageIcon("c:/run.jpg")));
        menuBar.add(menu);

        return menuBar;
    }

    private JPanel createDummyActionPanel(String actionGroup) {
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(1,3));
        
        for (int i = 0; i < 3; i++) {
            JButton btn = new JButton(new ImageIcon("c:/run.jpg"));
            btn.setToolTipText(actionGroup + i);
            btn = new JButton(new ImageIcon("c:/run.jpg"));
            panel.add(btn);
        }

        return panel;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new SubMenuExample();
    }
}

Gruß Tom
 
Moinsen,
noch ne richtig dumme Frage. Nachdem ich Buttons in die Panel haue und dann alles in das Menu einbinde, kommen keine ActionEvents mehr durch. Ist das normal?
JP
 
Hallo Leute,
hat niemand eine Idee bei meinem Problem. Ein ActionEvent vom Button abzufragen ist ja kein Problem, aber ich habe den JButton in einem JPanel. Dieses liegt in einem JMenuItem und das ganze in einer JMenuBar....

Ziemlich verzweigt und es kommt kein event durch... Ich hoffe jemand weiß warum. Vielen vielen Dank,
JP
 
Hmm der ActionListener scheint echt nichts mehr auszugeben.

Aber ein mouseClicked geht:

Java:
package de.tutorials;

import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.*;

/**
 * @author Tom
 * 
 */
public class SubMenuExample extends JFrame {

    public SubMenuExample() {
        super("SubMenuExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        setJMenuBar(createJMenuBar());

        pack();
        setVisible(true);
    }

    private JMenuBar createJMenuBar() {

        JMenuBar menuBar = new JMenuBar();

        JPanel dummyActionPanel = createDummyActionPanel("Save");

        JMenu menu = new JMenu();
        menu.setIcon(new ImageIcon("e:/run.jpg"));
        menu.add(createDummyActionPanel("save"));
        menu.add(createDummyActionPanel("load"));
        menu.add(new JMenuItem(new ImageIcon("e:/run.jpg")));
        menuBar.add(menu);

        return menuBar;
    }

    private JPanel createDummyActionPanel(String actionGroup) {
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(1,3));
        
        for (int i = 0; i < 3; i++) {
            JButton btn = new JButton(new ImageIcon("e:/run.jpg"));
            final String name = actionGroup + i;
            btn.setText(name);
            btn.setToolTipText(name);
            btn.addMouseListener(new MouseAdapter(){

				@Override
				public void mouseClicked(MouseEvent event) {
					System.out.println("mouseClicked " + name);
					
				}
            });
            panel.add(btn);
        }

        return panel;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new SubMenuExample();
    }
}
 
Hej, ja super vielen Dank, das mit dem MouseListener, allerdings schließt sich das Menu nicht, nachdem ich auf einen Button geklickt habe.
Da muss ich doch nicht noch ein Event abhören, oder doch?
Normalerweise schließt sich das doch automatisch, wenn ich einen Button anklicke...
Hat da jemand noch eine Idee?
Danke,
JP
 
Zurück