mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-29 14:52:52 +00:00
6937798: Nimbus: Issues with JTable grid
Reviewed-by: rupashka
This commit is contained in:
parent
9aca53da76
commit
42ddf1f667
@ -361,12 +361,14 @@ public class SynthTableUI extends BasicTableUI
|
||||
cMax = table.getColumnCount()-1;
|
||||
}
|
||||
|
||||
// Paint the grid.
|
||||
paintGrid(context, g, rMin, rMax, cMin, cMax);
|
||||
|
||||
// Paint the cells.
|
||||
paintCells(context, g, rMin, rMax, cMin, cMax);
|
||||
|
||||
// Paint the grid.
|
||||
// it is important to paint the grid after the cells, otherwise the grid will be overpainted
|
||||
// because in Synth cell renderers are likely to be opaque
|
||||
paintGrid(context, g, rMin, rMax, cMin, cMax);
|
||||
|
||||
paintDropLines(context, g);
|
||||
}
|
||||
|
||||
|
||||
164
jdk/test/javax/swing/JTable/6937798/bug6937798.java
Normal file
164
jdk/test/javax/swing/JTable/6937798/bug6937798.java
Normal file
@ -0,0 +1,164 @@
|
||||
/*
|
||||
* Copyright 2010 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/* @test
|
||||
@bug 6937798
|
||||
@summary Nimbus: Issues with JTable grid
|
||||
@author Alexander Potochkin
|
||||
@run main bug6937798
|
||||
*/
|
||||
|
||||
import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import javax.swing.table.TableModel;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class bug6937798 {
|
||||
|
||||
public static void main(String... args) throws Exception {
|
||||
UIManager.setLookAndFeel(new NimbusLookAndFeel());
|
||||
SwingUtilities.invokeAndWait(new Runnable() {
|
||||
public void run() {
|
||||
new bug6937798();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public bug6937798() {
|
||||
final JTable table = createCountryTable();
|
||||
table.setShowGrid(true);
|
||||
table.setSize(100, 100);
|
||||
|
||||
BufferedImage im = new BufferedImage(table.getWidth(), table.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics g = im.getGraphics();
|
||||
table.print(g);
|
||||
g.dispose();
|
||||
|
||||
for (int i = 0; i < im.getHeight(); i++) {
|
||||
for (int j = 0; j < im.getWidth(); j++) {
|
||||
if (im.getRGB(i, j) == table.getGridColor().getRGB()) {
|
||||
System.out.println("got it!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
throw new RuntimeException("no table's grid detected....");
|
||||
}
|
||||
|
||||
protected JTable createCountryTable() {
|
||||
// Column headers
|
||||
final String
|
||||
[] headers = {
|
||||
"Name", "Capital City", "Language(s)", "Monetary Unit(s)", "EC Member"
|
||||
};
|
||||
|
||||
// Table data
|
||||
final Object[][] data = {
|
||||
{"Albania", "Tirane", "Albanian, Greek", "Lek", new Boolean(false)},
|
||||
{"Andorra", "Andorra la Vella", "Catalan, French, Spanish", "French Franc, Spanish Peseta", new Boolean(false)},
|
||||
{"Austria", "Vienna", "German, Slovenian, Croatian", "Schilling", new Boolean(false)},
|
||||
{"Belarus", "Minsk", "Byelorussian, Russian", "Belarusian Rubel", new Boolean(false)},
|
||||
{"Belgium", "Brussels", "French, Flemish, German", "Belgian Franc", new Boolean(true)},
|
||||
{"Bosnia & Herzegovina", "Sarajevo", "Serbo-Croatian", "Dinar", new Boolean(false)},
|
||||
{"Bulgaria", "Sofia", "Bulgarian, Turkish", "Lev", new Boolean(false)},
|
||||
{"Croatia", "Zagreb", "Serbo-Croatian", "Croatian Kuna", new Boolean(false)},
|
||||
{"Czech Republic", "Prague", "Czech, Slovak", "Koruna", new Boolean(false)},
|
||||
{"Denmark", "Copenhagen", "Danish", "Krone", new Boolean(true)},
|
||||
{"Estonia", "Tallinn", "Estonian, Latvian, Lithuanian, Russian", "Estonian Kroon", new Boolean(false)},
|
||||
{"Finland", "Helsinki", "Finnish, Swedish, Lappish", "Markka", new Boolean(false)},
|
||||
{"France", "Paris", "French", "Franc", new Boolean(true)},
|
||||
{"Germany", "Berlin", "German", "Deutsche Mark", new Boolean(true)},
|
||||
{"Greece", "Athens", "Greek, English, French", "Drachma", new Boolean(true)},
|
||||
{"Hungary", "Budapest", "Hungarian", "Forint", new Boolean(false)},
|
||||
{"Iceland", "Reykjavik", "Icelandic", "Icelandic Krona", new Boolean(false)},
|
||||
{"Ireland", "Dublin", "Irish, English", "Pound", new Boolean(true)},
|
||||
{"Italy", "Rome", "Italian", "Lira", new Boolean(true)},
|
||||
{"Latvia", "Riga", "Lettish, Lithuanian, Russian", "Lat", new Boolean(false)},
|
||||
{"Liechtenstein", "Vaduz", "German", "Swiss Franc", new Boolean(false)},
|
||||
{"Lithuania", "Vilnius", "Lithuanian, Polish, Russian", "Lita", new Boolean(false)},
|
||||
{"Luxembourg", "Luxembourg", "French, German, Letzeburgesch", "Luxembourg Franc", new Boolean(true)},
|
||||
{"Macedonia", "Skopje", "Macedonian, Albanian, Turkish, Serbo-Croatian", "Denar", new Boolean(false)},
|
||||
{"Malta", "Valletta", "Maltese, English", "Maltese Lira", new Boolean(false)},
|
||||
{"Moldova", "Chisinau", "Moldovan, Russian", "Leu", new Boolean(false)},
|
||||
{"Monaco", "Monaco", "French, English, Italian", "French Franc", new Boolean(false)},
|
||||
{"the Netherlands", "Amsterdam", "Dutch", "Guilder", new Boolean(true)},
|
||||
{"Norway", "Oslo", "Norwegian", "Krone", new Boolean(false)},
|
||||
{"Poland", "Warsaw", "Polish", "Zloty", new Boolean(false)},
|
||||
{"Portugal", "Lisbon", "Portuguese", "Escudo", new Boolean(true)},
|
||||
{"Romania", "Bucharest", "Romanian", "Leu", new Boolean(false)},
|
||||
{"Russia", "Moscow", "Russian", "Ruble", new Boolean(false)},
|
||||
{"San Marino", "San Marino", "Italian", "Italian Lira", new Boolean(false)},
|
||||
{"Slovakia", "Bratislava", "Slovak, Hungarian", "Koruna", new Boolean(false)},
|
||||
{"Slovenia", "Ljubljana", "Slovenian, Serbo-Croatian", "Tolar", new Boolean(false)},
|
||||
{"Spain", "Madrid", "Spanish", "Peseta", new Boolean(true)},
|
||||
{"Sweden", "Stockholm", "Swedish", "Krona", new Boolean(false)},
|
||||
{"Switzerland", "Bern", "German, French, Italian", "Swiss Franc", new Boolean(false)},
|
||||
{"Turkey", "Ankara", "Turkish", "Turkish Lira", new Boolean(false)},
|
||||
{"Ukraine", "Kiev", "Ukranian, Russian, Romanian, Polish, Hungarian", "Hryvnia", new Boolean(false)},
|
||||
{"United Kingdom", "London", "English, Welsh", "British Pound", new Boolean(true)},
|
||||
{"Yugoslavia", "Belgrade", "Serbo-Croatian, Slovenian, Macedonian", "Dinar", new Boolean(false)},
|
||||
};
|
||||
|
||||
// Table model
|
||||
TableModel dataModel = new AbstractTableModel() {
|
||||
|
||||
public int getColumnCount() {
|
||||
return headers.length;
|
||||
}
|
||||
|
||||
public int getRowCount() {
|
||||
return data.length;
|
||||
}
|
||||
|
||||
public Object getValueAt(int row, int col) {
|
||||
return data[row][col];
|
||||
}
|
||||
|
||||
public String getColumnName(int column) {
|
||||
return headers[column];
|
||||
}
|
||||
|
||||
public Class getColumnClass(int col) {
|
||||
return getValueAt(0, col).getClass();
|
||||
}
|
||||
|
||||
public void setValueAt(Object aValue, int row, int column) {
|
||||
data[row][column] = aValue;
|
||||
}
|
||||
|
||||
public boolean isCellEditable(int row, int col) {
|
||||
return (col == 4);
|
||||
}
|
||||
};
|
||||
|
||||
// Create table with table model
|
||||
JTable countryTable = new JTable(dataModel);
|
||||
countryTable.setGridColor(Color.pink);
|
||||
countryTable.setBackground(Color.white);
|
||||
countryTable.setForeground(Color.black);
|
||||
return countryTable;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user