@hfx642 good question +1
but SpinnerModel has nothing to do with JSpinner' View, there you have to change Font, its size ...
to the JButton size(s) that's depend of JSpinner size, or are you meaning triagle JButtons Icon ???
anyway there are two way
1/ extract all JComponents from JSpinner (JFormattedTextField + two JButtons)
a/ by DefaultSpinnerUI but overide that for all Native OS
b/ MetalSpinnerUI for reduced usage of ..
2/ create own/custom JComponents
mKorbel
Veteran Poster
1,141 posts since Feb 2011
Reputation Points: 480
Solved Threads: 224
Font in JTextField ???
o.k. please edit my code with your question, beacuse/maybe there is/are small mistake(s), just with intention to avoid that :-)
1/ how you are extract JTextField, because there is JFormattedTextField
2/ and override preffered size for Two JButtons (hint change Icon)
DISLAIMER FOR CODE POLICIES == @ JamesCherrill this code is Free to use and please distribute that everywhere
import java.awt.*;
import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.border.LineBorder;
public class InactiveBackgroundTest {
public JComponent makeUI() {
JSpinner s0 = new JSpinner();
s0.setPreferredSize(new Dimension(100, 20));
s0.setEnabled(false);
UIManager.put("FormattedTextField.inactiveBackground", Color.RED);
JSpinner s1 = new JSpinner();
s1.setEnabled(false);
s1.setPreferredSize(new Dimension(100, 20));
JSpinner s2 = new JSpinner();
s2.setEnabled(false);
s2.setPreferredSize(new Dimension(100, 20));
JTextField field = ((JSpinner.NumberEditor) s2.getEditor()).getTextField();
field.setEditable(false);
field.setBackground(UIManager.getColor("FormattedTextField.background"));
JSpinner s3 = new JSpinner();
s3.setPreferredSize(new Dimension(100, 20));
s3.setEnabled(false);
s3.setBorder(null);
JTextField tf = ((JSpinner.DefaultEditor) s3.getEditor()).getTextField();
tf.setDisabledTextColor(Color.black);
tf.setBackground(Color.white);
tf.setBorder(new LineBorder(Color.blue, 1));
s3.setBorder(new LineBorder(Color.red, 1));
int n = s3.getComponentCount();
if (n > 0) {
Component[] components = s3.getComponents();
String compName = "";
for (int i = 0, l = components.length; i < l; i++) {
if (components[i] instanceof JButton) {
JButton button = (JButton) components[i];
if (button.hasFocus()) {
String btnMane = button.getName();
}
button.setBorder(new LineBorder(Color.red, 1));
System.out.println("JButton");
} else if (components[i] instanceof JComboBox) {
System.out.println("JComboBox");
} else if (components[i] instanceof JTextField) {
System.out.println("JTextField");
} else if (components[i] instanceof JFormattedTextField) {
System.out.println("JFormattedTextField");
} else if (components[i] instanceof JTable) {
System.out.println("JTable");
} else if (components[i] instanceof JScrollPane) {
System.out.println("JScrollPane");
} else if (components[i] instanceof JPanel) {
JPanel panel = (JPanel) components[i];
panel.setBackground(Color.red);
panel.setBorder(null);
System.out.println("JPanel");
}
}
}
JPanel p = new JPanel();
p.setBackground(Color.black);
p.add(s0);
p.add(s1);
p.add(s2);
p.add(s3);
return p;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
try {
//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(laf.getName())) {
UIManager.setLookAndFeel(laf.getClassName());
}
}
} catch (Exception e) {
e.printStackTrace();
}
/*try {
// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if (info.getName().equals("Nimbus")) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e1) {
e1.printStackTrace();
}*/
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new InactiveBackgroundTest().makeUI());
f.setPreferredSize(new Dimension(120, 140));
f.setLocationRelativeTo(null);
f.pack();
f.setVisible(true);
}
}
EDIT: why reinvent the wheel, because there are lots of Custom Java Look & Feel, with non-bugged setting for majorities of JComponents and with correct output to the GUI
mKorbel
Veteran Poster
1,141 posts since Feb 2011
Reputation Points: 480
Solved Threads: 224
mKorbel
Veteran Poster
1,141 posts since Feb 2011
Reputation Points: 480
Solved Threads: 224