1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Button mit Rand drum...

  • Benja
  • 9. September 2004 um 16:23
  • Unerledigt
  • Benja
    2
    Benja
    Mitglied
    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 :winking_face:
    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
    20
    JohnFoo
    Mitglied
    Reaktionen
    61
    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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung