java swing 阴影,Java Swing - 如何为显示灰色阴影的微调器实现自定义模型和自定义编辑器...

/*

*

* Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.

*

* Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,

* modify and redistribute this software in source and binary code form,

* provided that i) this copyright notice and license appear on all copies of

* the software; and ii) Licensee does not utilize the software in a manner

* which is disparaging to Sun.

*

* This software is provided "AS IS," without a warranty of any kind. ALL

* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY

* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR

* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE

* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING

* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS

* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,

* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER

* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF

* OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE

* POSSIBILITY OF SUCH DAMAGES.

*

* This software is not designed or intended for use in on-line control of

* aircraft, air traffic, aircraft navigation or aircraft communications; or in

* the design, construction, operation or maintenance of any nuclear

* facility. Licensee represents and warrants that it will not use or

* redistribute the Software for such purposes.

*/

import java.awt.Color;

import java.awt.Dimension;

import javax.swing.JComponent;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JSpinner;

import javax.swing.SpinnerNumberModel;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

class GrayModel extends SpinnerNumberModel {

public GrayModel(int value) {

super(value, 0, 255, 5);

}

public int getIntValue() {

Integer myValue = (Integer) getValue();

return myValue.intValue();

}

public Color getColor() {

int intValue = getIntValue();

return new Color(intValue, intValue, intValue);

}

}

class GrayEditor extends JLabel implements ChangeListener {

public GrayEditor(JSpinner spinner) {

setOpaque(true);

// Get info from the model.

GrayModel myModel = (GrayModel) (spinner.getModel());

setBackground(myModel.getColor());

spinner.addChangeListener(this);

// Set tool tip text.

updateToolTipText(spinner);

// Set size info.

Dimension size = new Dimension(60, 15);

setMinimumSize(size);

setPreferredSize(size);

}

protected void updateToolTipText(JSpinner spinner) {

String toolTipText = spinner.getToolTipText();

if (toolTipText != null) {

// JSpinner has tool tip text. Use it.

if (!toolTipText.equals(getToolTipText())) {

setToolTipText(toolTipText);

}

} else {

// Define our own tool tip text.

GrayModel myModel = (GrayModel) (spinner.getModel());

int rgb = myModel.getIntValue();

setToolTipText("(" + rgb + "," + rgb + "," + rgb + ")");

}

}

public void stateChanged(ChangeEvent e) {

JSpinner mySpinner = (JSpinner) (e.getSource());

GrayModel myModel = (GrayModel) (mySpinner.getModel());

setBackground(myModel.getColor());

updateToolTipText(mySpinner);

}

}

public class Main extends JPanel {

public static void main(String[] args) {

JFrame frame = new JFrame("SpinnerDemo4");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JComponent newContentPane = new Main();

newContentPane.setOpaque(true);

frame.setContentPane(newContentPane);

frame.add(new JLabel("Shade of Gray:"), "North");

frame.add(new JSpinner(new GrayModel(170)));

frame.pack();

frame.setVisible(true);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值