AWT Textfield ведет себя странно с MicroSoft JVM - PullRequest
0 голосов
/ 22 мая 2010

Я столкнулся со странной проблемой при использовании MicroSoft JVM для запуска моего апплета. У меня есть панель AWT с 4 текстовыми полями, которая добавляется в диалоговое окно. Все идет хорошо, пока я не введу десятичное значение в текстовое поле и не закрою диалоговое окно. Когда я снова открываю диалоговое окно, текстовое поле внутри панели со всеми десятичными цифрами (введенными на предыдущем шаге) ведет себя странно. Десятичные значения вместе с областью WHITE внутри текстового поля перемещаются влево и скрывают цифры. Когда я нажимаю внутри текстового поля, оно становится нормальным. У Panel ранее было gridlayout, и я даже попытался изменить его на gridbaylayout, и проблема все еще сохраняется.

ПРИМЕЧАНИЕ: все разработки относятся к JRE1.1 для совместимости с MS JVM

Если кто-нибудь может мне помочь с этим, это было бы очень полезно. Заранее спасибо.

 public MyPanel(Dialog myDialog)
 {
  Panel panel = new Panel();
  this.dialog = myDialog;

//Previous code with grid layout

/*  panel.setLayout(new GridLayout2(4,2,2,2));
  panel.add(new Label("Symbol:"));
        panel.add(symbolField = new TextField("",20));
  panel.add(new Label("Quantity:"));
  panel.add( qtyField = new TextField());
  panel.add(new Label("Price per Share:"));
  panel.add( costField = new TextField());
  panel.add(new Label("Date Acquired:"));
  panel.add( purchaseDate = new TextField() );*/

  GridBagLayout gridbag = new GridBagLayout();
  System.out.println("######## Created New GridBagLayout");

  GridBagConstraints constraints = new GridBagConstraints();
  panel.setLayout( gridbag );

  constraints = buildConstraints( constraints, 0, 0, 1, 1, 1.5, 1 );
  constraints.anchor = GridBagConstraints.WEST;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  panel.add( new Label("Symbol:"), constraints);

  constraints = buildConstraints( constraints, 1, 0, 1, 1, 1.5, 1 );
  constraints.anchor = GridBagConstraints.WEST;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  panel.add( symbolField = new TextField("",20), constraints);

  constraints = buildConstraints( constraints, 0, 1, 1, 1, 1.5, 1 );
  constraints.anchor = GridBagConstraints.WEST;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  panel.add( new Label("Quantity:"), constraints);

  constraints = buildConstraints( constraints, 1, 1, 1, 1, 1.5, 1 );
  constraints.anchor = GridBagConstraints.WEST;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  panel.add( qtyField = new TextField(), constraints);

  constraints = buildConstraints( constraints, 0, 2, 1, 1, 1.5, 1 );
  constraints.anchor = GridBagConstraints.WEST;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  panel.add( new Label("Price per Share:"), constraints);

  constraints = buildConstraints( constraints, 1, 2, 1, 1, 1.5, 1 );
  constraints.anchor = GridBagConstraints.WEST;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  panel.add( costField = new TextField(), constraints);

  constraints = buildConstraints( constraints, 0, 3, 1, 1, 1.5, 1 );
  constraints.anchor = GridBagConstraints.WEST;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  panel.add( new Label("Date Acquired:"), constraints);

  constraints = buildConstraints( constraints, 1, 3, 1, 1, 1.5, 1 );
  constraints.anchor = GridBagConstraints.WEST;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  panel.add( purchaseDate = new TextField(), constraints);
..............

.........

}

1 Ответ

0 голосов
/ 25 мая 2010

Я нашел решение этой проблемы. Установка позиции курсора текстового поля в 0 (ноль) после нажатия «ОК», кажется, решает эту проблему. Вот код ....

symbolField.setCaretPosition(0);  
qtyField.setCaretPosition(0);  
costField.setCaretPosition(0); 
...