2

だから私はファイルを読んでいて、そのファイルの行数を取得しています。それに基づいて、インターフェイスを生成します。ここで、値トラグス UI を編集する機能が必要です。Rows は、入力ドキュメントの行数を持つ変数です。もちろん、以下のコードは機能しません。読み取り元の配列に新しい値を書き込みたい。

for(int i=0;i<Rows;i++)
{
    //System.out.println("!"+Symbol[1]+"!");
    //if(Symbol[i]!=""&&Symbol[i]!=null)
    // {
    JTextField symbol = new JTextField(6);
    symbol.setText(Symbol[i]);
    symbol.setBounds(10,25*i+10 , 75, 20);
    symbol.setEditable(false);
    frame.add(symbol);
    JTextField buyf = new JTextField(4);
    buyf.setText(String.valueOf(buy[i]));
    buyf.setBounds(95, 25*i+10, 50, 20);
    buyf.setEditable(true);
    buyf.addActionListener(new java.awt.event.ActionListener() { 
         public void actionPerformed(ActionEvent ae) {  
              buy[i]=Integer.parseInt(buyf.getText());
         }
    });                      
    frame.add(buyf);
} 
4

1 に答える 1

3
  1. AbsoluteLayoutを使用しないでください。たとえばsymbol.setBounds(10,25*i+10 , 75, 20);、適切なを使用してください。LayoutManagerおそらくGridLayoutが最適です...

  2. JTextComponentsの変更をリッスンするためにDocumentListenerを使用する

  3. プレーンなJTextFieldではなくNumber formatter で JFormattedTextField を使用すると、すべてを削除できますparseWhatever

  4. プレーンなJTextFieldを使用できますが、DocumentFilter(数字以外の文字を削除します)

  5. ActionListenerは正しい可能性がありListener、代替手段はDocumentListenerポイント秒です

  6. より良いヘルプのためにSSCCEDocumentListenerを投稿するのが早いですが、それで解決できると思います

于 2012-09-28T12:03:31.310 に答える