-
Bug
-
Resolution: Unresolved
-
P4
-
7, 8, 9
-
x86
-
other
FULL PRODUCT VERSION :
1.8.0_112
jdk9-ea+156
ADDITIONAL OS VERSION INFORMATION :
Windows 10
EXTRA RELEVANT SYSTEM CONFIGURATION :
All LAF (Windows, Metal, Nimbus) seem affected
A DESCRIPTION OF THE PROBLEM :
Tab chars \t seem to confuse the JLabel rendering and print some characters too far right, when rendering <pre> text, and the tab chars appear before and inside the <span> (or font) section
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Execute attached sample code
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Correct rendered pre-text
ACTUAL -
some chars (t = in the attached samples) rendered too far right
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Wrong rendering (can I attach a screenshot?)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
/**
* Repro for render bug with Tab Characters inside <pre>.
*
* @author philipp
*/
public class HtmlPreRenderBugRepro {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(p());
frame.setBounds(100, 100, 800, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
char c = ' ';
System.out.println((int) c);
System.out.println((int) '\t');
}
static JPanel p() {
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
JTable table = new JTable(m());
contentPane.add(new JScrollPane(table));
contentPane.add(new JLabel("<html><pre> \t\t\t\t<span bgcolor='#aaccff'>\tt</span> = System.nanoTime();</pre></html>"), BorderLayout.NORTH);
return contentPane;
}
@SuppressWarnings("serial")
static TableModel m() {
return new AbstractTableModel() {
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return "<html><pre> \t<span>\tt</span> = System.nanoTime();</pre></html>";
}
@Override
public int getRowCount() {
return 10;
}
@Override
public int getColumnCount() {
return 1;
}
};
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
None that I know of
1.8.0_112
jdk9-ea+156
ADDITIONAL OS VERSION INFORMATION :
Windows 10
EXTRA RELEVANT SYSTEM CONFIGURATION :
All LAF (Windows, Metal, Nimbus) seem affected
A DESCRIPTION OF THE PROBLEM :
Tab chars \t seem to confuse the JLabel rendering and print some characters too far right, when rendering <pre> text, and the tab chars appear before and inside the <span> (or font) section
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Execute attached sample code
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Correct rendered pre-text
ACTUAL -
some chars (t = in the attached samples) rendered too far right
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Wrong rendering (can I attach a screenshot?)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
/**
* Repro for render bug with Tab Characters inside <pre>.
*
* @author philipp
*/
public class HtmlPreRenderBugRepro {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(p());
frame.setBounds(100, 100, 800, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
char c = ' ';
System.out.println((int) c);
System.out.println((int) '\t');
}
static JPanel p() {
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
JTable table = new JTable(m());
contentPane.add(new JScrollPane(table));
contentPane.add(new JLabel("<html><pre> \t\t\t\t<span bgcolor='#aaccff'>\tt</span> = System.nanoTime();</pre></html>"), BorderLayout.NORTH);
return contentPane;
}
@SuppressWarnings("serial")
static TableModel m() {
return new AbstractTableModel() {
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return "<html><pre> \t<span>\tt</span> = System.nanoTime();</pre></html>";
}
@Override
public int getRowCount() {
return 10;
}
@Override
public int getColumnCount() {
return 1;
}
};
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
None that I know of
- duplicates
-
JDK-6980898 HTML text overlap when painting view on label and scaling
-
- Closed
-