Java: SpinnerDemo4
Giải phóng thời gian, khai phóng năng lực
/*
* This application demonstrates using spinners.
* Other files required:
* SpringUtilities.java
*/
import javax.swing.*;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class SpinnerDemo4 extends JPanel {
public SpinnerDemo4() {
super(new SpringLayout());
String[] labels = {"Shade of Gray: "};
int numPairs = labels.length;
JSpinner spinner = addLabeledSpinner(this,
labels[0],
new GrayModel(170));
spinner.setEditor(new GrayEditor(spinner));
//Lay out the panel.
SpringUtilities.makeCompactGrid(this,
numPairs, 2, //rows, cols
10, 10, //initX, initY
6, 10); //xPad, yPad
}
static protected JSpinner addLabeledSpinner(Container c,
String label,
SpinnerModel model) {
JLabel l = new JLabel(label);
c.add(l);
JSpinner spinner = new JSpinner(model);
l.setLabelFor(spinner);
c.add(spinner);
return spinner;
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event dispatch thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("SpinnerDemo4");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
JComponent newContentPane = new SpinnerDemo4();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event dispatch thread:
//creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Turn off metal's use of bold fonts
UIManager.put("swing.boldMetal", Boolean.FALSE);
createAndShowGUI();
}
});
}
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);
}
}
}
Giải phóng thời gian, khai phóng năng lực