RFR: 8311031: JTable header border vertical lines are not aligned with data grid lines [v10]
Alexey Ivanov
aivanov at openjdk.org
Mon Jul 31 21:13:00 UTC 2023
On Mon, 31 Jul 2023 16:31:21 GMT, Tejesh R <tr at openjdk.org> wrote:
>> The header border uses `g.drawLine` whereas the JTable data grid lines uses `SwingUtilities2.drawVLine` and `SwingUtilities2.drawHLine` to draw horizontal and vertical lines. The SwingUtilities2 uses `Graphics.fillRect` which contributes to the difference between the position of these two lines which happens/visible at higher ui scaling (difference in alignment between vertical lines of these two). The fix propose to use the same methods for metal L&F of JTable header border paint.
>> CI testing shows green.
>>
>> 
>
> Tejesh R has updated the pull request incrementally with one additional commit since the last revision:
>
> Review fix
test/jdk/javax/swing/JTableHeader/TableHeaderBorderPositionTest.java line 60:
> 58:
> 59: String[] columnNames = {"Size", "Size"};
> 60: JTable table = new JTable(data, columnNames);
Suggestion:
String[][] data = {
{"1", "1"}
};
String[] columnNames = {"Size", "Size"};
JTable table = new JTable(data, columnNames);
Let's separate the data — `data` and `columnNames` from the table.
test/jdk/javax/swing/JTableHeader/TableHeaderBorderPositionTest.java line 68:
> 66:
> 67: BufferedImage bufferedImage = new BufferedImage(WIDTH, HEIGHT,
> 68: BufferedImage.TYPE_INT_RGB);
Suggestion:
JTable table = new JTable(data, columnNames);
Dimension tableSize = table.getPreferredSize();
table.setSize(tableSize);
final JTableHeader header = table.getTableHeader();
Dimension headerSize = header.getPreferredSize();
header.setSize(headerSize);
Dimension size = new Dimension(Math.max(headerSize.width, tableSize.width),
headerSize.height + tableSize.height);
BufferedImage bufferedImage =
new BufferedImage((int)Math.ceil(size.width * SCALE),
(int)Math.ceil(size.height * SCALE),
BufferedImage.TYPE_INT_RGB);
This takes into account both the header size and table size and sets the size of the image appropriately.
The constants `WIDTH` and `HEIGHT` have become redundant.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14766#discussion_r1279879383
PR Review Comment: https://git.openjdk.org/jdk/pull/14766#discussion_r1279880928
More information about the client-libs-dev
mailing list