1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Button mit Rand drum...

  • Benja
  • 9. September 2004 um 16:23
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Benja
    Punkte
    35
    Beiträge
    6
    • 9. September 2004 um 16:23
    • #1

    Hallo

    Ich möchte ein JPanel mit 7 Buttons nebeneinander haben. Das ist ja nicht wirklich schwer ;)
    Nun möchte ich aber, daß immer genau 1 Button "ausgewählt" ist. Das bedeutet, es wird mit einem Rahmen in einer anderen Farbe dargestellt.
    Dieser Rahmen macht mir Probleme.
    Wenn ich ihn zufüge ändern die Rechtecke nämlich ihre Größe - das darf nicht sein !

    Falls jemand einen Tipp für mich hat ... ?

    Code
    public class JChannelPanel extends JPanel implements MouseListener {
     
     	private JButton button1;
     private int chosenButton;
     
     public JChannelPanel() {
     		super(new GridBagLayout());
     		GridBagConstraints gbc = new GridBagConstraints();
     		this.setBackground(Color.BLACK);
     		gbc.fill = GridBagConstraints.HORIZONTAL;
     		gbc.insets = new Insets(1, 2, 1, 2);
    
     		button1 = new JButton("Button 1");
     		button1.setBackground(Color.blue);
     		button1.setForeground(Color.white);
     		selectButton(button1, 1);
     		button1.addMouseListener(this);
     		gbc.weightx = 0.5;
     		gbc.gridx = 0;
     		gbc.gridy = 0;
     		this.add(button1, gbc);
     ...
     }
    Alles anzeigen


    Wenn man auf einen Button klickt wird er aktiviert über die Methode selectButton():

    Code
    private void selectButton(JButton b, int number) {
     		b.setBackground(Color.blue);
     	    b.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED, Color.ORANGE, Color.orange));
     		switch (chosenButton) {
     			case 0: 
     				// tue nix
     				break;
     			case 1:
     				if (number == 1) {
     					// tue nix
     				} else {
     		    	    button1.setBorder(BorderFactory.createEmptyBorder());
     				}
     				break;
     		 ....
     		}
     		chosenButton = number;
     }
    Alles anzeigen



    Die Vorgabe ist, daß der ausgewählte Button einen Rahmen erhält. Wenn ein anderer ausgewählt wird soll beim bisher gewählten der Rahmen wieder verschwinden.

    Für Hinweise bin ich dankbar !

    Gruß,
    Benja

  • JohnFoo
    Punkte
    4.231
    Beiträge
    761
    • 9. September 2004 um 16:43
    • #2

    Hab mir jetzt den Code nicht angesehen, aber trotzdem folgender Tipp: Wenn das hinzufügen der Border die Größe verändert, wieso fügst du dann nicht von Anfang an die Border in der Hintergrundfarbe ein und färbst sie bei einem Hover/Click/whatever-Event um?

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum