⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nimrodscrollpaneui.java

📁 NimROD L&F是一个具有多种主题的Swing皮肤
💻 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 + -