Swing JButton will Rahmen nich verlieren

Status
Nicht offen für weitere Antworten.

diggaa1984

Top Contributor
hiho,

ich bekomm bei dem Button auf dem Tab einfach den Rahmen nicht weg. Das Bild (Kreuz) ist selbst gezeichnet und hat keinerlei gezeichnete Umrandung. Was ausser "borderPainted" kann denn noch dafür verantwortlich sein?

Java:
JButton b = new JButton(new ImageIcon(getClass().getResource("/resources/closefile.png")));
	b.setPreferredSize(new Dimension(17,17));
	b.setBorderPainted(false);
	b.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			//foo
		}//actionPerformed
	});

	add(b);

mehr mache ich mit dem Button nicht, er wird auf ein Panel geaddet
 

diggaa1984

Top Contributor
so hab das ganze nun mal nachgesponnen von der einzelnen Nutzung als Panel über Nutzung als ButtonTabComponent auf JTabbedPane und mit Nutzung des eingestellten LaF's und siehe da, erst bei Aktivierung des System-LaF's erscheint der Rahmen, habe ich da nun gar keine Chance das zu entfernen!?

KSKB
Java:
	import javax.swing.*;
	import java.awt.event.*;
	import java.awt.*;
	import java.util.Locale;
	

	public class JButtonTabComponent extends JPanel {
		

		private static final long serialVersionUID = -8542356396515309100L;
		
		private final JLabel title;
		private int modifier;

		public JButtonTabComponent(int modifier, int index) {
			super();
		
			this.title = new JLabel();			
			this.modifier = modifier;
			
			setup(modifier, index);
			this.setPreferredSize(new Dimension(this.getPreferredSize().width, 14));
		}//constructor
		
		
		private void setup(int modifier, int index) {
			setOpaque(false);
			setLayout(new FlowLayout(FlowLayout.LEFT,10,0));
			setBorder(BorderFactory.createEmptyBorder());
			
			//setTitle
			title.setText("test");
			add(title);

			
			if ((modifier & 1) == 1) {
				//ImageIcon i = new ImageIcon(getClass().getResource("/closefile.png"));
				//Zum testen reicht auch n normales Label
				JButton b = new JButton("x");
				b.setPreferredSize(new Dimension(i.getIconWidth(),i.getIconHeight()));
				b.setBorderPainted(false);
				b.addActionListener(new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						//
					}//actionPerformed
				});
				add(b);
			}//if
		}//setup
		
		
		public static void main(String[] args) {
			try {
				//UEbeltaeter
				UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			JFrame f  = new JFrame();
			f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			JTabbedPane t = new JTabbedPane();
			t.add(new JTextArea());
			t.setTabComponentAt(0,new JButtonTabComponent(1,0));
			f.add(t);
			f.pack();
			f.setVisible(true);
		}
	}
 
Zuletzt bearbeitet:

cover1012

Aktives Mitglied
habs nicht probiert, aber vielleicht hilft ja:
Java:
UIManager.put("Button.border", new CompoundBorder(null, null)) ;
 

diggaa1984

Top Contributor
habs nicht probiert, aber vielleicht hilft ja:
Java:
UIManager.put("Button.border", new CompoundBorder(null, null)) ;

vielleicht hilfts, aber das klingt danach als würde es ALLE buttons im gesamten programm betreffen .. das wäre dann weniger gut :D .. hm mal sehen habs bild nun so gestaltet, das es nich stört wenn ne border dabei ist ^^

und @Version: 1.6_13 .. das Bsp da oben sollte aber ohne weiteres bei dir funktionieren.
 

cover1012

Aktives Mitglied
vielleicht hilfts, aber das klingt danach als würde es ALLE buttons im gesamten programm betreffen .. das wäre dann weniger gut :D .. hm mal sehen habs bild nun so gestaltet, das es nich stört wenn ne border dabei ist ^^

und @Version: 1.6_13 .. das Bsp da oben sollte aber ohne weiteres bei dir funktionieren.

Klar, das betrifft alle Buttons. Wenns aber funktioniert, sollte für einzelne Buttons dann:
Java:
b.setBorder(new CompoundBorder(null, null))
funzen.
 

Ebenius

Top Contributor
Sorry, da hab ich nicht aufgepasst. :)

Probier mal, den Button so zu initialisieren:
Java:
new JButton(...) {
  @Override
  public void setUI(ButtonUI ui) {
    super.setUI(ui);
    setBorderPainted(false);
  }
}
UIs bestehender Komponenten zu wechseln ist immer problematisch und sollte nach Möglichkeit vermieden werden. Immer erst das UI auswählen, danach die GUI aufbauen. :-(

Ebenius
 

diggaa1984

Top Contributor
seh grad so ganz KSKB isses ja gar net da oben :D .. aber klappt immer noch net. Windows weigert sich wohl strikt dagegen, dass der rahmenlos ist .. oder Java schaffts nich sich durchzusetzen ^^

und mit dem Tipp von Cover1012 gehts auch net .. ham wir da n bug gefunden!?

hier nochmal das KSKB mit allen Fiesheiten die genannt wurden:
Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.plaf.*;    
 
public class JButtonTabComponent extends JPanel {
        
       private static final long serialVersionUID = -8542356396515309100L;
        
       private final JLabel title;
       private int modifier;
 
       public JButtonTabComponent(int modifier, int index) {
              super();
        
              this.title = new JLabel();          
              this.modifier = modifier;
            
              setup(modifier, index);
       }//constructor
        
        
       private void setup(int modifier, int index) {
              setOpaque(false);
              setLayout(new FlowLayout(FlowLayout.LEFT,10,0));
              setBorder(BorderFactory.createEmptyBorder());
            
              //setTitle
              title.setText("test");
              add(title);
 
              if ((modifier & 1) == 1) {
                     //ImageIcon i = new ImageIcon(getClass().getResource("/closefile.png"));
                     //Zum testen reicht auch n normales Label
                     JButton b = new JButton("x") {
                            @Override
                                   public void setUI(ButtonUI ui) {
                                          super.setUI(ui);
                                          setBorderPainted(false);
                                   }
                     };
                
                     b.setPreferredSize(new Dimension(14,14));
                     b.setBorderPainted(false);
                     b.addActionListener(new ActionListener() {
                            @Override
                            public void actionPerformed(ActionEvent e) {
                                   //
                            }//actionPerformed
                     });
                
                     add(b);
              }//if
       }//setup
        
        
       public static void main(String[] args) {
              try {
                     //UEebeltaeter
                     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                     
                     UIManager.put("Button.border", new javax.swing.border.CompoundBorder(null, null)) ;
              } catch (Exception e) {
                     e.printStackTrace();
              }
            
              JFrame f  = new JFrame();
              f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
              JTabbedPane t = new JTabbedPane();
              t.add(new JTextArea());
              t.setTabComponentAt(0,new JButtonTabComponent(1,0));
              f.add(t);
              f.pack();
              f.setVisible(true);
       }
}
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
aeh ich glaub mit mir is vorbei ^^ ... kann es sein das es gar nich die Border ist die ich da sehe?

Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.plaf.*;    
 
public class JButtonTabComponent extends JPanel {
        
       private static final long serialVersionUID = -8542356396515309100L;
        
       private final JLabel title;
       private int modifier;
 
       public JButtonTabComponent(int modifier, int index) {
              super();
        
              this.title = new JLabel();          
              this.modifier = modifier;
            
              setup(modifier, index);
       }//constructor
        
        
       private void setup(int modifier, int index) {
              setOpaque(false);
              setLayout(new FlowLayout(FlowLayout.LEFT,10,0));
              setBorder(BorderFactory.createEmptyBorder());
 
	       JButton b;
              if ((modifier & 1) == 1) {
                     //ImageIcon i = new ImageIcon(getClass().getResource("/closefile.png"));
                     //Zum testen reicht auch n normales Label
                     b = new JButton("x") {
                            @Override
                                   public void setUI(ButtonUI ui) {
                                          super.setUI(ui);
                                          setBorderPainted(false);
                                   }
                     };
                
                     b.setPreferredSize(new Dimension(14,14));
                     b.setBorderPainted(false);
                     b.addActionListener(new ActionListener() {
                            @Override
                            public void actionPerformed(ActionEvent e) {
                                   //
                            }//actionPerformed
                     });
		     
		     title.setText(String.valueOf(b.isBorderPainted()));
		     add(title);
		     add(b);
              }//if
       }//setup
        
        
       public static void main(String[] args) {
              try {
                     //UEebeltaeter
                     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
              } catch (Exception e) {
                     e.printStackTrace();
              }
            
              JFrame f  = new JFrame();
              f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
              JTabbedPane t = new JTabbedPane();
	      JButton test = new JButton("testButton");
	      test.setBorder(BorderFactory.createLoweredBevelBorder());
              t.add(test);
              t.setTabComponentAt(0,new JButtonTabComponent(1,0));
              f.add(t);
              f.pack();
              f.setVisible(true);
       }
}

wenn ich das so anschmeisse, dann seh ich ja ne Border und den komischen schwarzen Rand den ich weg haben will .. oh maaaaaan :shock:

kommt das dann wahrscheinlich doch durch irgendeine interne paint-Methode zustande, sodass wenn ich die überschreibe der Rand dann weg sein könnte :hihi:
 
G

Gast2

Gast
Also ich kann dein Problem mit den KSKB nicht nachvollziehen...

Bei mir ist alles normal

vielleicht helfen die beiden methoden für den button
Java:
setFocusPainted(false);
setContentAreaFilled(false);

EDIT:
Ich denke du suchst die methode von dem button
Java:
setContentAreaFilled(false);
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
B JButton Rahmen ausblenden AWT, Swing, JavaFX & SWT 3
M Swing Rahmen innerhalb des JButton entfernen AWT, Swing, JavaFX & SWT 2
K JButton - Rahmen AWT, Swing, JavaFX & SWT 2
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
B JButton Search AWT, Swing, JavaFX & SWT 8
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Swing Kann man auf JButton zeichenen AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A Swing JButton mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 6
F Swing Scrollbare Liste von JButton AWT, Swing, JavaFX & SWT 4
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
A Swing JButton aussehen AWT, Swing, JavaFX & SWT 12
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
G Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
C Swing JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
stylegangsta MouseEvents aus JButton aufrufen AWT, Swing, JavaFX & SWT 3
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
M JButton - Listener AWT, Swing, JavaFX & SWT 1
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
S Swing Rückmeldung für JButton AWT, Swing, JavaFX & SWT 4
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
U Event Handling JButton Actionevent: starte Spiel AWT, Swing, JavaFX & SWT 4
E JButton füllt ganzes JPanel auf AWT, Swing, JavaFX & SWT 6
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
W Swing JButton lässt sich nicht anzeigen AWT, Swing, JavaFX & SWT 8
Kandum Swing JButton - onclick -> Grafikfehler AWT, Swing, JavaFX & SWT 2
R JButton durch Enter auslösen AWT, Swing, JavaFX & SWT 7
T Swing JButton per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 5
M Problem mit FlowLayout, JLabel und JButton AWT, Swing, JavaFX & SWT 4
M JButton wird von JTree überdeckt AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben