Dashed Border in JRE 7 funktioniert nicht

eskimo328

Aktives Mitglied
In unserer Anwendung haben wir eine Methode um einen dashed Border zu erzeugen:
Java:
public static Border dashedBorder(Color color) {
		Border dashedBorder = new LineBorder(color){
			@Override
			public void paintBorder(Component c, Graphics g, int x, int y,
					int width, int height) {
				Graphics2D g2D = (Graphics2D)g;
				g2D.setStroke(new BasicStroke( 0.5f, 
												BasicStroke.CAP_BUTT, 
												BasicStroke.JOIN_MITER, 
												10.0f, 
												new float[]{ 5.0f }, 
												0.0f));
				super.paintBorder(c, g, x, y, width, height);					
			}
		};
		return dashedBorder;
	}

Funktioniert unter Java 6 wie es soll. Mit Java 7 wird eine durchgezogene statt einer gestrichelten Linie gezeichnet. Kennt jemand das Problem, gibt es hier in Java 7 eine Änderung oder ist das ein Bug?
 

Kevin94

Top Contributor
Wenn du die Sourcen von LineBorder in den beiden JDK Versionen vergleichst, lässt sich erahnen woran es liegt. Die Java 6 Version verwendet zum zeichenen Graphics.drawRectangle bzw. drawRoundRectangle und die Java 7 Version verwendet ein Path Object, dass mit Graphics2D.fill gezeichnet wird. Du wirst wohl die ganze Methode aus dem Java 6 Code kopieren müssen und den super Aufruf ganz streichen.

Java 6 LineBorder:
Java:
    public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
        Color oldColor = g.getColor();
        int i;

	/// PENDING(klobad) How/should do we support Roundtangles?
        g.setColor(lineColor);
        for(i = 0; i < thickness; i++)  {
	    if(!roundedCorners)
                g.drawRect(x+i, y+i, width-i-i-1, height-i-i-1);
	    else
                g.drawRoundRect(x+i, y+i, width-i-i-1, height-i-i-1, thickness, thickness);
        }
        g.setColor(oldColor);
    }
Java 7 LineBorder:
Java:
    public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
        if ((this.thickness > 0) && (g instanceof Graphics2D)) {
            Graphics2D g2d = (Graphics2D) g;

            Color oldColor = g2d.getColor();
            g2d.setColor(this.lineColor);

            Shape outer;
            Shape inner;

            int offs = this.thickness;
            int size = offs + offs;
            if (this.roundedCorners) {
                int arc = offs + size;
                outer = new RoundRectangle2D.Float(x, y, width, height, arc, arc);
                inner = new RoundRectangle2D.Float(x + offs, y + offs, width - size, height - size, arc, arc);
            }
            else {
                outer = new Rectangle2D.Float(x, y, width, height);
                inner = new Rectangle2D.Float(x + offs, y + offs, width - size, height - size);
            }
            Path2D path = new Path2D.Float(Path2D.WIND_EVEN_ODD);
            path.append(outer, false);
            path.append(inner, false);
            g2d.fill(path);
            g2d.setColor(oldColor);
        }
    }
 

eskimo328

Aktives Mitglied
Ok, thx, funktioniert!

Aber kann das die optimale Lösung sein bzw. gibt es unter Java 7 neue Methoden um einen solchen Border mit gestrichelten Linien zu zeichnen?
 

Kevin94

Top Contributor
In Java 7 wurde die Klasse StrokeBorder eingeführt, der du im Konstruktor ein BasicStroke Objekt übergeben kannst. Ein Blick in die API bewirkt bei solchen Problemen meist Wunder.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX CSS Border (Verschiebung verhindern) AWT, Swing, JavaFX & SWT 4
MiMa GUI Controller für Border Pane als MVC Modell AWT, Swing, JavaFX & SWT 1
MaxG. JavaFX JavaFX Border zuweisen AWT, Swing, JavaFX & SWT 8
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
S Rectangle Border Color AWT, Swing, JavaFX & SWT 13
J JFrame border AWT, Swing, JavaFX & SWT 2
V Swing JButton ohne Border bei Anklicken AWT, Swing, JavaFX & SWT 3
C Border in JPanel erstellen AWT, Swing, JavaFX & SWT 4
Kenan89 Border nimmt Platz AWT, Swing, JavaFX & SWT 17
L Border verschwindet durch Graphics.drawImage() AWT, Swing, JavaFX & SWT 4
B Border anzeigen/nicht anzeigen AWT, Swing, JavaFX & SWT 6
G Swing JTabbedPane Was für ein Border wird da um die Tabs gezeichnet? AWT, Swing, JavaFX & SWT 6
G Etched Border nur an einer Seite einfügen AWT, Swing, JavaFX & SWT 16
P Swing Größe eines JPanels bestimmen (ohne Border!) AWT, Swing, JavaFX & SWT 2
F Swing UI Problem mit Zeichnen der Tab-Border AWT, Swing, JavaFX & SWT 2
N JButton Border(null) AWT, Swing, JavaFX & SWT 3
A SWT - group - border color? AWT, Swing, JavaFX & SWT 4
S Border von JTabbedpane-Tab? AWT, Swing, JavaFX & SWT 3
K SWT Titeld Border AWT, Swing, JavaFX & SWT 3
H JList: Selection-Border entfernen AWT, Swing, JavaFX & SWT 2
Streeber Menüpunkt - Border/Strich AWT, Swing, JavaFX & SWT 2
A Titled Border nur oben? AWT, Swing, JavaFX & SWT 3
A Eigene Border für Buttons AWT, Swing, JavaFX & SWT 19
T Font mit Border AWT, Swing, JavaFX & SWT 7
T Border eines Panels nicht an der rechten Kante anzeigen AWT, Swing, JavaFX & SWT 7
T paintComponent() überschreiben: Platz für Border freihalten? AWT, Swing, JavaFX & SWT 6
C menubar border AWT, Swing, JavaFX & SWT 2
X Einzelne Border setzen AWT, Swing, JavaFX & SWT 2
J Border bei JSplitPane entfernen? AWT, Swing, JavaFX & SWT 2
K Border von JTextField AWT, Swing, JavaFX & SWT 1
M JWindow mit Rahmen(border) ausstatten AWT, Swing, JavaFX & SWT 4
G JPanel und Border AWT, Swing, JavaFX & SWT 16
C SWT Composite Border im Nachhinein setzen AWT, Swing, JavaFX & SWT 1
M Border in ToolTip AWT, Swing, JavaFX & SWT 5
E JButton und Border AWT, Swing, JavaFX & SWT 6
J Border im Header bei JTable verändern AWT, Swing, JavaFX & SWT 3
Z Border um ein JPanel AWT, Swing, JavaFX & SWT 3
W Probleme mit Border- und null-Layout AWT, Swing, JavaFX & SWT 8
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert das rotieren unter 2dGraphics, also wie stelle ich z. B. 90° ein? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert Polygon? AWT, Swing, JavaFX & SWT 1
U Wie genau funktioniert 2dgraphics, in diesem Bezug? AWT, Swing, JavaFX & SWT 4
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
EinNickname9 Einfacher parser funktioniert nicht AWT, Swing, JavaFX & SWT 2
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7
P Swing jxmapviewer hinzufügen/nutzen funktioniert nicht AWT, Swing, JavaFX & SWT 7
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
H Bewegung funktioniert nicht AWT, Swing, JavaFX & SWT 3
N Pixelfarbe abgleichen funktioniert nicht AWT, Swing, JavaFX & SWT 5
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
steven789hjk543 Swing Weiß jemand, warum dieses Programm nicht funktioniert? AWT, Swing, JavaFX & SWT 7
M Swing setMaximumSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
K JavaFX funktioniert nicht AWT, Swing, JavaFX & SWT 2
B AWT actionPerformed Method funktioniert nicht AWT, Swing, JavaFX & SWT 12
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
J JavaFX addListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P CardLayout funktioniert fehlerhaft AWT, Swing, JavaFX & SWT 13
L WrapLayout funktioniert nicht AWT, Swing, JavaFX & SWT 1
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
S JavaFX mit javac compilieren funktioniert nicht AWT, Swing, JavaFX & SWT 2
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
J AWT System Farben / java.awt.SystemColor funktioniert nicht AWT, Swing, JavaFX & SWT 4
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
K javafx app > "run in browser" funktioniert nicht AWT, Swing, JavaFX & SWT 3
N JavaFX GridPane Halignment funktioniert nicht AWT, Swing, JavaFX & SWT 1
it_is_all JLabel.setIcon - funktioniert nicht mehr AWT, Swing, JavaFX & SWT 2
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z BoxLayout funktioniert nicht und Buttongröße AWT, Swing, JavaFX & SWT 18
C Java Hintergrund funktioniert nicht AWT, Swing, JavaFX & SWT 9
J Swing Wie funktioniert dieser ChangePropertyListener??? AWT, Swing, JavaFX & SWT 0
GreenTeaYT Button funktioniert nicht für Ein-und Auszahlungen? AWT, Swing, JavaFX & SWT 8
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben