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. 使用DocumentListener监听JTextComponents的变化

  3. JFormattedTextField 与 Number formatter 一起使用,而不是普通的JTextField,那么您可以删除关于parseWhatever

  4. 您可以使用普通的JTextField但使用DocumentFilter(删除非数字字符)

  5. ActionListener可能是正确Listener的,另一种选择是DocumentListener在第二点

  6. 尽快发布SSCCE以获得更好的帮助,但我认为这DocumentListener可以解决这个问题

于 2012-09-28T12:03:31.310 回答