请教如何在spinner中显示十六进制的数?急!

caolaner418 2006-07-04 03:45:51
如何在spinner中显示十六进制的数?是要自己去写editor么?
...全文
223 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gtlang78 2006-07-05
  • 打赏
  • 举报
回复
import java.awt.BorderLayout;
import java.text.ParseException;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.text.DefaultFormatterFactory;

public class T {
public static void main(String[] args) {
JSpinner spinner = new JSpinner(new SpinnerNumberModel(50, 0, 100, 1));
final JFormattedTextField.AbstractFormatter formatter = new JFormattedTextField.AbstractFormatter() {
public Object stringToValue(String text) throws ParseException {
if (text != null && text.startsWith("0x")) {
text = text.substring(2);
}
return new Integer(Integer.parseInt(text, 16));
}

public String valueToString(Object value) throws ParseException {
int v = ((Number)value).intValue();
return "0x" + Integer.toHexString(v).toUpperCase();
}
};

class HexNumberEditor extends JSpinner.DefaultEditor {
public HexNumberEditor(JSpinner spinner) {
super(spinner);

if (!(spinner.getModel() instanceof SpinnerNumberModel)) {
throw new IllegalArgumentException("model not a SpinnerNumberModel");
}
getTextField().setEditable(true);
getTextField().setFormatterFactory(new DefaultFormatterFactory(formatter));
}
}

spinner.setEditor(new HexNumberEditor(spinner));

JFrame f = new JFrame();
f.getContentPane().add(spinner, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
caolaner418 2006-07-05
  • 打赏
  • 举报
回复
自己顶一下先!难道就没有什么办法么?JFormattedTextField能有这种功能么?
caolaner418 2006-07-05
  • 打赏
  • 举报
回复
牛人啊!今天要下班了,明天来结贴:)

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧