2012-09-28 30 views
2

所以我正在讀取一個文件,並得到該文件中的行數。基於我生成我的界面。現在我需要有能力編輯優化界面。行是輸入文檔具有如何行的變量。當然下面的代碼不起作用。我想將新值寫入從中讀取的數組。從JTextField獲取數據,這是幾個局部變量之一

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); 
} 
+1

我不知道你想要什麼..但也許問題的標題是你的答案?不要讓它們成爲局部變量.. –

+0

我想讀取一個文件生成用戶界面的基礎上,並能夠使用JTextFields輸入 – user1633277

+0

您的問題的描述不清楚...無論如何,'buyf'變量有如果你想在你的匿名內部類中使用它,你將被聲明爲final。 – Yanflea

回答

0

除非框架有一個獲取其組件的方法(它的JFrame劑量)只是不做一個局部變量。

3
  1. 不使用AbsoluteLayout例如, symbol.setBounds(10,25*i+10 , 75, 20);使用適當的LayoutManager,也許GridLayout是最適合你的...

  2. 使用DocumentListener更改的聽力在JTextComponents

  3. 使用JFormattedTextField with Number formatter,而不是普通的JTextField,那麼你可以刪除有關parseWhatever

  4. 一切
  5. 你可以使用普通JTextField但是用DocumentFilter(刪除非數字字符)

  6. ActionListener可能是正確的Listener另一種是點第二

  7. 爲更好地幫助越早張貼SSCCEDocumentListener,但我認爲DocumentListener可以解決