nur ein gedrückter JToggleButton

floggie

Mitglied
Hi,

Gibt es eine Möglichkeit einer Gruppe von JToggleButtons zu sagen, dass immer nur einer gedrückt sein kann?
Kann man ein JPopUpMenu zu einem Button adden. Bei mir ist das JPopUpMenu nämlich unheimlich schmal wenn ich dies versuche. :-(

Grüsse

floggie
 
Zuletzt bearbeitet:
Beim JPopupMenu könntest du ja mal schauen ob es ne Methode setWidth oder setSize oder ähnliches gibt!

Vg Erdal
 
Hi,

Die setSize Methoden habe ich durchprobiert, haben aber keinen Effekt. Irgendwie ist das merkwürdig, weil es wirklich nur ein minimaler Streifen ist der dann aufgeht. Mann kann noch nicht mal den Menüpunkt lesen.
Das mit der Buttongroup passt, Danke.

Grüsse

floggie
 
Hallo Floggie,

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonPopupMenuExample extends JFrame implements MouseListener {

	JButton b = new JButton("b");

	JPopupMenu pm = new JPopupMenu();

	JMenuItem m1 = new JMenuItem("einseinseinseins");

	JMenuItem m2 = new JMenuItem("zweizweizwei");

	JMenuItem m3 = new JMenuItem("dreidreidreidreidreidrei");

	public ButtonPopupMenuExample() {

		pm.add(m1);
		pm.add(m2);
		pm.add(m3);

		setAlwaysOnTop(true);
		setLocationByPlatform(true);
		setLayout(new FlowLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		add(b);

		pack();
		setVisible(true);

		b.addMouseListener(this);
	}

	public static void main(String[] args) {
		ButtonPopupMenuExample test = new ButtonPopupMenuExample();
	}

	public void mouseClicked(MouseEvent e) {
	}

	public void mousePressed(MouseEvent e) {
	}

	public void mouseReleased(MouseEvent e) {
		pm.show(b, e.getX(), e.getY());
	}

	public void mouseEntered(MouseEvent e) {
	}

	public void mouseExited(MouseEvent e) {
	}
}

Vg Erdal
 
Mein Code sah für das Erstellen des JPopUpMenu sah nicht anders aus als von flashray. Bis auf das ich die Zeile

public void mouseReleased(MouseEvent e) {
pm.show(b, e.getX(), e.getY());
}

ausgelassen habe. Das PopUpMenu kommt standardmässig bei Rechtsklick auf der Komponente wo es geaddet wurde.
Nicht böse sein, aber habe das PopUpMenu schon rausgeworfen weils mir dann zu bunt wurde(Auf meinem jTree läufts wunderschön auf dem Button nicht, was solls).

Grüsse

floggie
 
sorry,

Kann scheinbar meinen eigenen Code nicht mehr lesen :-(. habe natürlich auch show benutzt. Habe das einfach überlesen. Tut mir leid

//Beispiel für einen jTree
popup = new JPopupMenu();
mi = new JMenuItem("Prozess anzeigen");
mi.addActionListener(this);
mi.setActionCommand("show");
popup.add(mi);


popup.setOpaque(true);
popup.setLightWeightPopupEnabled(true);

jTree1.addMouseListener (
new MouseAdapter () {
public void mouseReleased( MouseEvent e ) {
if ( e.isPopupTrigger()) {
popup.show( (JComponent)e.getSource(), e.getX(), e.getY() );
System.out.println((JComponent)e.getSource());

}
}
 
Hallo Floggie,

mit einem JTree funktioniert es ebenso problemlos. Kauf dir mal einen gescheiten Computer :p .

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TreePopup extends JFrame {

	JPopupMenu popup = new JPopupMenu();
	JTree tree = new JTree();
	
	public TreePopup() {
		setAlwaysOnTop(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new FlowLayout());
			
		popup.add(new JMenuItem("Prozess anzeigen"));
		popup.add(new JMenuItem("Prozess anzeigen anzeigen"));
		popup.add(new JMenuItem("Prozess anzeigen anzeigen anzeigen"));
		
		add(tree);
		pack();
		
		tree.addMouseListener(new MouseAdapter() {
			public void mouseReleased(MouseEvent e) {
				if (e.isPopupTrigger()) {
					popup.show(tree, e.getX(), e.getY());
				}
			}
		});
		
		setVisible(true);
	}

	public static void main(String[] args) {
		new TreePopup();
	}
}

Vg Erdal
 
Zurück