提交 71fe85dd 编写于 作者: A alitvinov

8057791: Selection in JList is drawn with wrong colors in Nimbus L&F

Reviewed-by: alexp, serb
上级 d748a4ab
...@@ -13407,7 +13407,7 @@ ...@@ -13407,7 +13407,7 @@
<cacheSettingsInherited>false</cacheSettingsInherited> <cacheSettingsInherited>false</cacheSettingsInherited>
<cacheMode>NO_CACHING</cacheMode> <cacheMode>NO_CACHING</cacheMode>
<uiproperties> <uiproperties>
<uiProperty name="rendererUseListColors" type="BOOLEAN" value="true"/> <uiProperty name="rendererUseListColors" type="BOOLEAN" value="false"/>
<uiProperty name="rendererUseUIBorder" type="BOOLEAN" value="true"/> <uiProperty name="rendererUseUIBorder" type="BOOLEAN" value="true"/>
<uiProperty name="cellNoFocusBorder" type="BORDER"> <uiProperty name="cellNoFocusBorder" type="BORDER">
<border type="empty" top="2" left="5" bottom="2" right="5"/> <border type="empty" top="2" left="5" bottom="2" right="5"/>
...@@ -13513,10 +13513,10 @@ ...@@ -13513,10 +13513,10 @@
<uiproperties/> <uiproperties/>
</style> </style>
<backgroundStates> <backgroundStates>
<state stateKeys="Disabled"> <state stateKeys="Selected">
<style> <style>
<textForeground> <textForeground>
<matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/> <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
</textForeground> </textForeground>
<textBackground/> <textBackground/>
<background> <background>
...@@ -13541,6 +13541,56 @@ ...@@ -13541,6 +13541,56 @@
</layer> </layer>
</canvas> </canvas>
</state> </state>
<state stateKeys="Disabled+Selected">
<style>
<textForeground/>
<textBackground/>
<background>
<matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
</background>
<inherit-background>false</inherit-background>
<uiproperties/>
</style>
<canvas>
<size width="100" height="30"/>
<nextLayerNameIndex>2</nextLayerNameIndex>
<stretchingInsets top="0" bottom="0" left="0" right="0"/>
<layer name="Layer 1">
<opacity>1.0</opacity>
<fillOpacity>1.0</fillOpacity>
<blendingMode>NORMAL</blendingMode>
<locked>false</locked>
<visible>true</visible>
<shapes/>
<effects/>
</layer>
</canvas>
</state>
<state stateKeys="Disabled">
<style>
<textForeground>
<matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
</textForeground>
<textBackground/>
<background/>
<inherit-textForeground>false</inherit-textForeground>
<uiproperties/>
</style>
<canvas>
<size width="100" height="30"/>
<nextLayerNameIndex>2</nextLayerNameIndex>
<stretchingInsets top="0" bottom="0" left="0" right="0"/>
<layer name="Layer 1">
<opacity>1.0</opacity>
<fillOpacity>1.0</fillOpacity>
<blendingMode>NORMAL</blendingMode>
<locked>false</locked>
<visible>true</visible>
<shapes/>
<effects/>
</layer>
</canvas>
</state>
</backgroundStates> </backgroundStates>
<foregroundStates/> <foregroundStates/>
<borderStates/> <borderStates/>
/*
* Copyright (c) 2016, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/* @test
@bug 8057791
@summary Selection in JList is drawn with wrong colors in Nimbus L&F
@author Anton Litvinov
@run main bug8057791
*/
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.lang.reflect.InvocationTargetException;
import java.util.HashSet;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;
public class bug8057791 {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
final int listWidth = 50;
final int listHeight = 50;
final int selCellIndex = 0;
JList<String> list = new JList<String>();
list.setSize(listWidth, listHeight);
DefaultListModel<String> listModel = new DefaultListModel<String>();
listModel.add(selCellIndex, "E");
list.setModel(listModel);
list.setSelectedIndex(selCellIndex);
BufferedImage img = new BufferedImage(listWidth, listHeight,
BufferedImage.TYPE_INT_ARGB);
Graphics g = img.getGraphics();
list.paint(g);
g.dispose();
Rectangle cellRect = list.getCellBounds(selCellIndex, selCellIndex);
HashSet<Color> cellColors = new HashSet<Color>();
int uniqueColorIndex = 0;
for (int x = cellRect.x; x < (cellRect.x + cellRect.width); x++) {
for (int y = cellRect.y; y < (cellRect.y + cellRect.height); y++) {
Color cellColor = new Color(img.getRGB(x, y), true);
if (cellColors.add(cellColor)) {
System.err.println(String.format("Cell color #%d: %s",
uniqueColorIndex++, cellColor));
}
}
}
Color selForegroundColor = list.getSelectionForeground();
Color selBackgroundColor = list.getSelectionBackground();
if (!cellColors.contains(new Color(selForegroundColor.getRGB(), true))) {
throw new RuntimeException(String.format(
"Selected cell is drawn without selection foreground color '%s'.",
selForegroundColor));
}
if (!cellColors.contains(new Color(selBackgroundColor.getRGB(), true))) {
throw new RuntimeException(String.format(
"Selected cell is drawn without selection background color '%s'.",
selBackgroundColor));
}
}
});
} catch (UnsupportedLookAndFeelException | InterruptedException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册