日期:2014-05-20  浏览次数:20791 次

这个程序错在哪?(Java核心技术卷一P324例题)
package com.corejava.L93;



  /**
  * 第七个数--短日期格式
  */
  DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT);
  format.setLenient(false);
  JFormattedTextField dateField2 = new JFormattedTextField(format);
  dateField2.setValue(new Date());
  addRow("Date(short,not lenient):", dateField2);

  try {
  DefaultFormatter formatter = new DefaultFormatter();
  formatter.setOverwriteMode(false);
  JFormattedTextField urlField = new JFormattedTextField(formatter);
  urlField.setValue(new URL("http://java.sun.com"));
  addRow("URL:", urlField);
  } catch (MalformedURLException e) {
  e.printStackTrace();
  }

  try {
  MaskFormatter formatter = new MaskFormatter("###-##-####");//错误1
  formatter.setPlaceholderCharacter('0');
  JFormattedTextField ssnField = new JFormattedTextField(formatter);
  ssnField.setValue("078-05-1120");
  addRow("SSN Mask:", ssnField);
  } catch (ParseException exception) {
  exception.printStackTrace();
  }

  JFormattedTextField ipField = new JFormattedTextField(
  new IPAddressFormatter());
  ipField.setValue(new byte[] { (byte) 130, 65, 86, 66 });
  addRow("IP Address:", ipField);
  }

  public void addRow(String labelText, final JFormattedTextField field) {
  mainPanel.add(new JLabel(labelText));
  mainPanel.add(field);
  final JLabel valueLabel = new JLabel();
  mainPanel.add(valueLabel);
  okButton.addActionListener(new ActionListener() {//错误2
  public void acctionPerformed(ActionEvent event) {
  Object value = field.getValue();
  if (value.getClass().isArray()) {
  StringBuilder builder = new StringBuilder();
  builder.append('{');
  for (int i = 0; i < Array.getLength(value); i++) {
  if (i > 0)
  builder.append(',');
  builder.append(Array.get(value, i).toString());
  }
  builder.append('}');
  valueLabel.setText(builder.toString());
  } else
  valueLabel.setText(value.toString());
  }
  });
  }
}

class IntFilter extends DocumentFilter {
  public void insertString(FilterBypass fb, int offset, String string,
  AttributeSet attr) throws BadLocationException {
  StringBuilder builder = new StringBuilder(string);
  for (int i = builder.length() - 1; i >= 0; i--) {
  int cp = builder.codePointAt(i);
  if (!Character.isDigit(cp) && cp != '=') {
  builder.deleteCharAt(i);
  if (Character.isSupplementaryCodePoint(cp)) {
  i--;
  builder.deleteCharAt(i);
  }
  }
  }
  super.insertString(fb, offset, builder.toString(), attr);
  }

  public void replace(FilterBypass fb, int offset, int length, String string,