📄 nimrodscrollpaneui.java
字号:
/*
* (C) Copyright 2005 Nilo J. Gonzalez
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser Gereral Public Licence as published by the Free
* Software Foundation; either version 2 of the Licence, or (at your opinion) any
* later version.
*
* This library is distributed in the hope that it will be usefull, but WITHOUT ANY
* WARRANTY; without even the implied warranty of merchantability or fitness for a
* particular purpose. See the GNU Lesser General Public Licence for more details.
*
* You should have received a copy of the GNU Lesser General Public Licence along
* with this library; if not, write to the Free Software Foundation, Inc., 59
* Temple Place, Suite 330, Boston, Ma 02111-1307 USA.
*
* http://www.gnu.org/licenses/lgpl.html (English)
* http://gugs.sindominio.net/gnu-gpl/lgpl-es.html (Espa�ol)
*
*
* Original author: Nilo J. Gonz�lez
*/
package com.nilo.plaf.nimrod;
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.*;
import javax.swing.plaf.metal.*;
import javax.swing.plaf.basic.*;
/**
*
* @author Nilo J. Gonzalez 2007
*/
public class NimRODScrollPaneUI extends BasicScrollPaneUI {
public static ComponentUI createUI( JComponent x) {
return new NimRODScrollPaneUI();
}
public void installUI( JComponent c) {
super.installUI(c);
JScrollPane sp = (JScrollPane)c;
sp.getHorizontalScrollBar().putClientProperty( MetalScrollBarUI.FREE_STANDING_PROP, Boolean.FALSE);
sp.getVerticalScrollBar().putClientProperty( MetalScrollBarUI.FREE_STANDING_PROP, Boolean.FALSE);
// Si el componente alojado tiene borde, hay que quitarselo para que no quede
// feo.
Component cc = sp.getViewport().getView();
if ( cc != null ) {
try {
JComponent ccc = (JComponent)cc;
ccc.setBorder( null);
}
catch ( Exception ex) {
System.out.println( ex);
}
}
}
public void paint( Graphics g, JComponent c) {
JScrollPane sp = (JScrollPane)c;
if ( sp.getViewportBorder() != null ) {
// Parece que el popup de los combos contiene un scrollpane que contiene un panel,
// asi que hay que asegurarse de que si papi es un combo no se pinta el borde
// para que el combo no quede "raro"
Component cc = c.getParent();
while ( cc != null ) {
if ( cc.toString().startsWith( "javax.swing.plaf.basic.BasicComboPopup")) {
sp.setViewportBorder( null);
break;
}
cc = cc.getParent();
}
// Ahora vamos a ver si el componente alojado dentro del scrollpane tiene un
// borde y se lo quitamos. Esto tambien se hace en installUI, pero hay que
// repetirlo en cada repintado porque si se cambia el tema no se vuelve a
// llamar el metodo principal.
cc = sp.getViewport().getView();
if ( cc != null ) {
try {
JComponent ccc = (JComponent)cc;
ccc.setBorder( null);
}
catch ( Exception ex) { /*si no se puede, pues no se puede...*/}
}
}
super.paint( g, c);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -