Java SE7 getpercentinstance
我有一个程序,它在使用NumberFormat.getPercentInstance格式化的JFormattedTextField上使用actionPerformed侦听器。其设置如下:Java SE7 getpercentinstance,java,swing,number-formatting,Java,Swing,Number Formatting,我有一个程序,它在使用NumberFormat.getPercentInstance格式化的JFormattedTextField上使用actionPerformed侦听器。其设置如下: percentFormat = NumberFormat.getPercentInstance(); txtRPI = new JFormattedTextField(percentFormat); percentFormat.setMinimumFractionDigits(1);
percentFormat = NumberFormat.getPercentInstance();
txtRPI = new JFormattedTextField(percentFormat);
percentFormat.setMinimumFractionDigits(1);
percentFormat.setMaximumIntegerDigits(2);
GridBagConstraints gbc_txtRPI = new GridBagConstraints();
gbc_txtRPI.insets = new Insets(0, 0, 5, 5);
gbc_txtRPI.gridx = 3;
gbc_txtRPI.gridy = 2;
gbc_txtRPI.anchor = GridBagConstraints.FIRST_LINE_START;
txtRPI.setValue(objParams.getRPI());
panTop.add(txtRPI, gbc_txtRPI);
txtRPI.setColumns(10);
txtRPI.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
objParams.setRPI((double)txtRPI.getValue());
}
});
在我将以下代码添加到另一个带有表的JPanel上之前,这一切都很顺利:
public class MyPercentRender extends DefaultTableCellRenderer {
/**
*
*/
private static final long serialVersionUID = 1L;
private static NumberFormat formatter = NumberFormat.getPercentInstance();
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
// First format the cell value as required
formatter.setMinimumFractionDigits(1);
formatter.setMaximumFractionDigits(2);
formatter.setMaximumIntegerDigits(2);
value = formatter.format((Number)value);
// And pass it on to parent class
return super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column );
}
}
一旦添加了它,第一个字段的actionListener就停止被激发,因此我无法保存该值
以前有没有人见过这种行为,知道发生了什么
谢谢你的回复。我已取出静电计。作为事件分派线程的一部分,它是 我尝试了更多的东西,但这个例子似乎是在转移注意力。即使我把它拿出来,actionlistener也不会被解雇。我已经在创建后检查了对象,并且侦听器与其他对象一起注册
类
我用过这个代码
txtRPI = new JFormattedTextField();
GridBagConstraints gbc_txtRPI = new GridBagConstraints();
gbc_txtRPI.insets = new Insets(0, 0, 5, 5);
gbc_txtRPI.gridx = 3;
gbc_txtRPI.gridy = 2;
gbc_txtRPI.anchor = GridBagConstraints.FIRST_LINE_START;
txtRPI.setValue(objParams.getRPI());
txtRPI.setColumns(10);
txtRPI.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
objParams.setRPI((double)txtRPI.getValue());
}
});
panTop.add(txtRPI, gbc_txtRPI);
this.add(panTop, BorderLayout.PAGE_START);
但结果还是一样。我所有的其他ActionListener(在按钮和组合框上)都可以工作。格式化文本有什么问题吗?查看片段时会出现两个相关问题:
的NumberFormat
实例将由static
的所有实例共享TableCellRenderer
- Swing也不是格式化程序,而且,例如。验证Swing GUI对象是否仅在上构造和操作
formatter.setMaximumIntegerDigits(3)代码>为100%。