JToggleButton

pl4gu33

Top Contributor
Hey,...

ich hab einige Fragen zum JToggleButton,...

1. ich will im geklickten Zustand ein Bild anzeigen lassen, Problem ist bloss, dass er es nicht zentriert anzeigt sondern verschoben nach rechts halb aus dem Button raus ... ich habe schon mit setIconTextGap(iconTextGap) rumprobiert aber das bringt mich auch net weiter habt ihr dafür ne Lösung?

2. wenn man auf den Button klickt wird son kleines Viereck makiert sozusagen, auf den aktuell ausgewählen Button kann man das irgendwie ausstellen,... sozusagen der Focus den man auch mit TAB verschieben kann
 

danke schonmal für 2 das hat super geklappt 🙂

zu 1. ich meinte das so, dass ich meinem Button mit "this.setSelectedIcon(Icon);" nen Icon zuweise, welches er im Selected Zustand anzeigt. Problem hier bei ist, dass das Bild immer am unteren Teil des Buttons angezeigt wird, aber ich finde auch in dem Link keine Methoden um das SelectedIcon zu verschieben... für das normale Icon gibts nen paar Methoden aber das passt... hoffe meine Frage ist jetzt etwas klarer geworden 🙂
 
Mhmm, kannst du mal deinen Code zeigen? Anscheinend erweiterst du ja auch den ToggleButton?! ;/

Habs mal eben bei mir ausprobiert, hier wirds normal zentriert:
Java:
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				try{
				JFrame frame = new JFrame();
				JPanel panel = new JPanel(new BorderLayout());
				JToggleButton btn = new JToggleButton();
				btn.setIcon(new ImageIcon(new URL("http://www.java-forum.org/images/buttons/quote.gif")));
				btn.setSelectedIcon(new ImageIcon(new URL("http://www.java-forum.org/images/buttons/edit.gif")));
				btn.setFocusPainted(false);
				panel.add(btn);
				frame.add(panel);
				frame.setSize(200, 100);
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setLocationRelativeTo(null);
				frame.setVisible(true);
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		});
	}
 
hier ist meine Klasse für die Karten :

Java:
import java.awt.BorderLayout;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JToggleButton;

import App.Spielfeld;

public class GUIKarte extends JToggleButton{
		/**
	 * 
	 */
	        private static final long serialVersionUID = 1L;
		private ImageIcon mHinten;	
		public GUIKarte(ImageIcon vorne,ImageIcon hinten){
			super(vorne);								
			mHinten=hinten;				
			this.setSelectedIcon(hinten);			
			this.setFocusPainted(false);			
		}
				
		public ImageIcon getHinten(){
			return mHinten;
		}
}

Zur Erklärung, diese Karten werden erstellt und angeordnet vorne stellt dabei halt das Bild im nicht-Selected Button dar und hinten das Bild im Selected Button... bei deinem Beispiel isses vll. etwas unglücklich, dass du so kleine Schlatflächen genommen hast, weil diese würde bei mir im Selected Zustand auch mehr oder weniger zentriert sein,... Problem ist bloss, dass meine Bilder etwas größer sind als diese Icons und sich daher von der Mitte aus nach unten rechts zum Buttonrand hinziehen... hab dir mal nen Bild dran gehängt im Selected Zustand mit deinem Icon
also meine Buttons werden in ein Panel mit Gridlayout geaddet 6x6....

HINWEIS: ich hab das Problem gefunden,.... es liegt daran, dass wenn das Bild größer / kleiner als das auf der Rückseite ist, verschiebt sie eins der beiden Bilder,...mm das is ja eklig 😀
 
Zuletzt bearbeitet:
HINWEIS: ich hab das Problem gefunden,.... es liegt daran, dass wenn das Bild größer / kleiner als das auf der Rückseite ist, verschiebt sie eins der beiden Bilder,...mm das is ja eklig 😀

Hehe, genau das wollt ich dich gerade fragen 🙂
Vllt gibts da einen besseren Workaround, aber wie wärs, wenn du einfach das kleinere Bild auf die gleiche Größe bringst und dann das eigentliche Bild einfach selbst zentrierst?
 
Hehe, genau das wollt ich dich gerade fragen 🙂
Vllt gibts da einen besseren Workaround, aber wie wärs, wenn du einfach das kleinere Bild auf die gleiche Größe bringst und dann das eigentliche Bild einfach selbst zentrierst?

jop ich hab die Bilder jetzt angepasst, dass sie alle gleich groß ca. sind so gings auch ... dann danke 😀
auf sowas muss man erstmal kommen 😛 😀
 

Zurück
Oben