buttons über getSelected ansprechen

Status
Nicht offen für weitere Antworten.

schlydi

Mitglied
Hallo,

ich habe eine Klasse, in der ich über eine Funktion mehrere ButtonGroups per Array erstelle in etwa:

Java:
for (int i=0; i<7; i++) {
	    		p2.add(tb = new JToggleButton(cd[i][0] + cd[i][1] + cd[i][2] )); 
	    			tb.addActionListener(cbg3);
	    			tb.setActionCommand(cd[i][2]);
	    			bg1.add(tb);
	    		}
	        }

Jetzt würde ich gerne über einen Decorator bei Klick auf einen bestimmten Button das gleiche Bild haben, nur den ausgewählten Button einfärben und die anderen nicht auswählbar machen.. Mein Problem ist, daß ich zwar über bg1.getSelection() die ausgewählten Buttons kriege, aber als ButtonModel. Wie komme ich vom ButtonModel zum eigentlichen Button? Habe ich da einfach eine Schleife im Hirn? ???:L

Danke schonmal,
schlydi
 
S

SlaterB

Gast
das ButtonModel kennt seinen Button standardmäßig nicht,
da ist eine gewollte Indirekten, die nicht immer schön ist,
z.B. weiß ein TableModel nicht, welche Zeilen/ Zellen aktuell selektiert sind (SelectionModel in JTable)
während ein Model zur ComboBox dagegen das selektierte Element gleich mitverwaltet,
anderseits ist das auch gar nicht immer möglich, z.B. wenn zwei Tabellen das gleiche TableModel verwenden..

genug abgeschweift, vom ButtonModel kommst du nicht an den Button,
entweder baust du dein eigenes Model mit zusätzlicher Funktionalität oder du hast noch eine separate Datenstruktur,
z.B. irgendwo eine Map Model -> Button
 

schlydi

Mitglied
danke, über eine Map komme ich jetzt an den Button, allerdings klappt mein Vorhaben, das Aussehen über einen Decorator zu verändern nicht wirklich.

Java:
public class TryButton extends JFrame { //zu dekorierende Klasse
		

		public void build(final Container pane) throws IOException {

	        //erstellt ein Panel mit verschiedenen ButtonGroups, normales Aussehen
	    }
		
		public class UpdateList implements ActionListener {
			
			//mit dem ActionListener rufe ich die Klasse Decorator auf und übergebe meine alte Klasse und ein Array mit 3 gespeicherten Buttons
			public void actionPerformed(ActionEvent e) {
				AbstractButton[] asb = showVoice();
				Decorator d = new Decorator(new TryButton("Landtagswahl in Schleswig-Holstein"), asb);
				try {
					d.createAndShow(); //hier sollte dann eigentlich ein neues Fenster mit neuen Eigenschaften kommen, sieht aber genauso aus wie das alte..
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		}
	    
		//zeigt Ergebnis von build() an
	    public void createAndShow() throws IOException {
	        //erstelle neues Objekt TryButton
			TryButton frame = new TryButton("Hallo");
	    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	        frame.build(frame.getContentPane());
	        frame.pack();
	        frame.setVisible(true);
	    }
	    
	    
	    public AbstractButton[] showVoice() {
	    	
	    	AbstractButton eins;
			AbstractButton zwei;
			AbstractButton drei;
			AbstractButton[] ab = new AbstractButton[3];
			
			//if (bg3.getSelection()== null) {
				bm1 = bg1.getSelection();
				eins = map.get(bm1);
				bm2 = bg2.getSelection();
	        	zwei = map.get(bm2);
	        	ab[0] = eins;
	        	ab[1] = zwei;
	    	//}
			
			//else {
				bm3 = bg3.getSelection();
				drei = map.get(bm3);
				ab[2] = drei;
			//}

			return ab;
	    }
	    
	    public static void main(String[] args) throws IOException{
	        //rufe Methode createAndShow auf
	    	TryButton show = new TryButton("Hallo");
	    	show.createAndShow();
	    }
}

Meine Decorator-Klasse sieht so aus:
Java:
public class Decorator extends TryButton {
	
	TryButton button;
	AbstractButton[] asb;
	
	public Decorator(TryButton button, AbstractButton[] asb) {
		super("Hallo");
		this.button = button;
		this.asb = asb;
	}
	//Versuch, die build()-Methode zu ergänzen
	public void build() throws IOException {
		
		if (asb[2] == null) {
			button.build(button.getContentPane());
			asb[0].setOpaque(true);
			asb[0].setBackground(Color.red);
			asb[1].setOpaque(true);
			asb[1].setBackground(Color.red);
		}
		else {
			button.build(button.getContentPane());
			asb[2].setOpaque(true);
			asb[2].setBackground(Color.red);
		}
		
		button.build(button.getContentPane());
	}
	
	public void createAndShow() throws IOException {

    	Decorator frame = new Decorator(button, asb);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //hier müßte dann eigentlich das alte Objekt mit den neuen Eigenschaften erstellt werden 
        frame.build(frame.getContentPane());
        frame.pack();
        frame.setVisible(true);
    }
	
}

ich hoffe, mein problem ist verständlich.
 
S

SlaterB

Gast
meine Güte, hast du viele JFrames da,
um das eine Original-Frame mit verrückten Namen TryButton sowie das Decorator-Frame anzuzeigen, werden gleich 5 JFrames erzeugt,
3 davon logischerweise nicht genutzt,

fängt in der main-Methode an: die erzeugt einen TryButton, also ein vollständiges JFrame,
dessen createAndShow()-Methode erzeugt aber selber nochmal einen TryButton, der dann auch angezeigt wird,
wieso nicht sich selber anzeigen? createAndShow() gehört doch bereits zu einem fertigen TryButton

in UpdateList (fast noch verrückterer Name für einen ActionListener)
wird dann das dritte TryButton-Frame erstellt, hätte nicht eines der ersten beiden ausgereicht?

dieses geht an ein Decorator, zusammen mit den Buttons,
die createAndShow()-Methode von Decorator erstellt mal wieder noch ein ganz neues Decorator-Frame,
welchem diesmal immerhin sparsamerweise das schon vorhandene TryButton-Frame übergeben wird,
sowie die Buttons

die build()-Methode wird nicht aufgerufen, mit anderer Parameteranzahl kann sie die build(Container) Methode aus TryButton kaum überschreiben,
auch werden darin die Buttons zwar bearbeitet, aber anscheinend nirgendwo genutzt?

vielleicht reicht es, statt
> frame.build(frame.getContentPane());
nur
frame.build();
aufzurufen


-----

man kann übrigens Componenten nicht mehrmals anzeigen, wenn sie irgendwo neu eingefügt werden,
verschwinden sie bestenfalls aus ihrer alten Position, oder es hagelt Exceptions
 

schlydi

Mitglied
Die Namen ergeben schon einen Sinn, jedenfalls bei mir.. aber dank Reduktion der JFrames und Angleichen der Parameter funktioniert das jetzt, danke :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Panels über buttons zu anderen Panels hinzufügen AWT, Swing, JavaFX & SWT 2
G Verknüpfung von Frames über Buttons AWT, Swing, JavaFX & SWT 4
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
jojoge Wie erstelle ich runde Buttons mit Farbe? AWT, Swing, JavaFX & SWT 1
berserkerdq2 Buttons und Shapes sehen ja nach Screengröße klein oder zu groß aus, jemand eine Idee, was man tun kann? AWT, Swing, JavaFX & SWT 1
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
volcanos SpringLayout mit zusätzlichen Buttons außerhalb des SpringLayout AWT, Swing, JavaFX & SWT 33
K Swing Buttons erst blinken lassen und dann abfragen, ob sie gedrückt worden sind AWT, Swing, JavaFX & SWT 2
Z Switch Case für Buttons AWT, Swing, JavaFX & SWT 8
O Swing JOptionPane.showOptionDialog - Wie kann ich Buttons größer machen AWT, Swing, JavaFX & SWT 10
R mehrere buttons mit forschleife kreieren und individuell bearbeiten AWT, Swing, JavaFX & SWT 1
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
B JavaFX DropDown Menu mit ausführbaren Buttons AWT, Swing, JavaFX & SWT 1
VPChief Buttons Reagieren erst wenn ich Fenster minimiere AWT, Swing, JavaFX & SWT 4
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
K Buttons dynamisch erstellen (NetBeans) AWT, Swing, JavaFX & SWT 10
S Kreis vergrößern/verkleinern mit Buttons AWT, Swing, JavaFX & SWT 1
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
J TicTacToe Buttons AWT, Swing, JavaFX & SWT 14
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
DaCrazyJavaExpert Swing Extern den Text eines nicht fetsgelegten Buttons bekommen. AWT, Swing, JavaFX & SWT 12
T Swing Double Click bei Buttons in JTable AWT, Swing, JavaFX & SWT 9
C Buttons funtionieren nicht AWT, Swing, JavaFX & SWT 10
S SWT neues Fenster, buttons aus alten etc... AWT, Swing, JavaFX & SWT 0
G vorgefertigte Buttons oder neue Komponente mit MouseListener? AWT, Swing, JavaFX & SWT 0
Neumi5694 Sprache der Standard-Buttons AWT, Swing, JavaFX & SWT 7
Timo_neu_in_java Buttons Erstellen AWT, Swing, JavaFX & SWT 6
H JavaFX TableCell mit Buttons AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
kilopack15 Buttons ohne Funktion AWT, Swing, JavaFX & SWT 2
S Keylistener reagiert bei Buttons nicht. AWT, Swing, JavaFX & SWT 8
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
T Buttons auf Tablet viel kleiner als am PC AWT, Swing, JavaFX & SWT 0
S Buttons und TextField automatisch vergrößern AWT, Swing, JavaFX & SWT 8
R 2D-Grafik Buttons mit Slick2D und LWJGL AWT, Swing, JavaFX & SWT 2
J JavaFX Buttons mit Array erzeugen AWT, Swing, JavaFX & SWT 1
JG12111989 Buttons funktionieren nicht AWT, Swing, JavaFX & SWT 4
A Swing Buttons werden trotz setVisible nicht dargestellt AWT, Swing, JavaFX & SWT 14
M Buttons in JSplitPane hinzufügen AWT, Swing, JavaFX & SWT 6
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
I JavaFX Langes drücken eines Buttons AWT, Swing, JavaFX & SWT 4
I JavaFX Buttons und TableView AWT, Swing, JavaFX & SWT 2
K Swing Durch Methode erzeugte Buttons ansteuern AWT, Swing, JavaFX & SWT 5
D Buttons werden nebeneinander angeordnet AWT, Swing, JavaFX & SWT 9
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
D JavaFX Dynamisch erzeugte Buttons sollen Code ausführen. AWT, Swing, JavaFX & SWT 2
D Buttons erscheinen nicht auf Frame AWT, Swing, JavaFX & SWT 2
M 4-Gewinnt mit Buttons AWT, Swing, JavaFX & SWT 1
Y Kann man Buttons in einem JFrame rund machen ? AWT, Swing, JavaFX & SWT 2
K Swing Keine Reaktion auf Tastatureingaben bei mehreren Buttons??? AWT, Swing, JavaFX & SWT 4
wolfgang63 JavaFX Transparenter Hintergrund aber sichtbare Buttons AWT, Swing, JavaFX & SWT 6
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
gamebreiti auf usereingabe warten mit GUI(nur Labels, Buttons etc. keine Texteingaben) AWT, Swing, JavaFX & SWT 3
W Buttons verschieben AWT, Swing, JavaFX & SWT 3
R Swing Buttons werden nicht angezeigt AWT, Swing, JavaFX & SWT 4
P Buttons/Labels auf GUI positionieren AWT, Swing, JavaFX & SWT 2
X Swing setContentPane verdeckt mir alle Buttons Labels etc... AWT, Swing, JavaFX & SWT 14
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
U Swing Beim Bedienen eines Buttons JFrame schließen AWT, Swing, JavaFX & SWT 2
A Radio Buttons sollen den Text der text Area bestimmen AWT, Swing, JavaFX & SWT 9
H org.eclipse.swt.Slider ohne Buttons AWT, Swing, JavaFX & SWT 1
U Buttons schräg implementieren AWT, Swing, JavaFX & SWT 4
X buttons aus externe klasse lesen? AWT, Swing, JavaFX & SWT 3
V Buttons sehen immer "active" aus AWT, Swing, JavaFX & SWT 6
K Event Handling 2 Buttons und Thread stop AWT, Swing, JavaFX & SWT 3
D Buttons erscheinen nicht auf dem zweiten Frame AWT, Swing, JavaFX & SWT 4
D Wie kann ich Buttons und Labels besser anordnen AWT, Swing, JavaFX & SWT 4
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
A Swing bei Auswahl und klick eines JComboBox buttons die Klasse eines anderen Projekts aufrufen AWT, Swing, JavaFX & SWT 3
M Menü mit Buttons AWT, Swing, JavaFX & SWT 8
H Swing JTabbedPane: Zusätzliche Buttons neben den Tabs AWT, Swing, JavaFX & SWT 7
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
U Swing Buttons generieren AWT, Swing, JavaFX & SWT 19
G Swing Buttons in Layouts frei platzieren AWT, Swing, JavaFX & SWT 7
S Layouts, mehrere Buttons nebeneinander AWT, Swing, JavaFX & SWT 2
B Buttons auf JLabel? AWT, Swing, JavaFX & SWT 4
J ActionListener für Buttons AWT, Swing, JavaFX & SWT 3
1 Buttons in Kombination mit Linien AWT, Swing, JavaFX & SWT 3
K Aussehen des Buttons resetten AWT, Swing, JavaFX & SWT 4
C Verschiebbare "Buttons" in einer Tabelle AWT, Swing, JavaFX & SWT 3
A JButton - Klicks zählen auf mehreren Buttons AWT, Swing, JavaFX & SWT 2
H Swing Button Klick soll "Untermenü-Buttons" erzeugen AWT, Swing, JavaFX & SWT 2
dzim Toolbar - Problem bei enable/disable von Buttons AWT, Swing, JavaFX & SWT 6
E Netbeans: Buttons mit Label bzw. Rahmen unterlegen AWT, Swing, JavaFX & SWT 8
F Grafik mit Buttons versehen AWT, Swing, JavaFX & SWT 8
J JOptionPane mit zwei Buttons?! AWT, Swing, JavaFX & SWT 3
K Schachbrett mit buttons AWT, Swing, JavaFX & SWT 2
B Buttons entfernen / hinzufügen AWT, Swing, JavaFX & SWT 5
TheWhiteShadow Swing Buttons in Liste AWT, Swing, JavaFX & SWT 7
C AWT Buttons verschwinden, wenn Fenster Vollbild gesetzt wird AWT, Swing, JavaFX & SWT 38
C AWT Verwendung von Buttons in Spielen AWT, Swing, JavaFX & SWT 8
M Swing Focus für Buttons deaktiviert --> keine Reaktion mehr auf Tastendrücke AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben