有一个try语句的问题,可能是因为我不理解尝试

时间:2014-03-12 05:45:31

标签: java joptionpane

尝试使用JFileChooser来允许编辑包含字符串的文件。在这样做时,我被迫使用try语句来捕获任何IOException错误。我有BufferedReader扫描文件,我已经能够成功完成文件所需的一切(解析明智)。

当我试图让用户选择某个'项目时会出现问题。编辑。我忘了提到正在读取的文件有两个字段,一个项目名称和项目定价。每行代表一个新项目。我已经能够将每行的项目名称添加到JComboBox,以允许用户选择要编辑的项目。

我似乎无法让我的JOptionPane.showConfirmDialog显示在try语句中。我JOptionPane唯一可以使用的变体是.showInputDialog,但这会增加一个我不想要的字段。

到底是怎么回事?我知道我的语法对于JOptionPane是正确的,因为如果我将它放在try语句之外它会显示正常(没有任何所需信息的albiet)。有没有办法传出我从try语句中的文件中获取的itemList?我正在通过方法调用进行思考,但正如我试图解决这个问题一样。

我的代码

public class editItem extends JPanel{

    private Item item;
    private String filePath;
    private String[] itemList;
    private final JFormattedTextField name, price;
    private final FileNameExtensionFilter filter;
    private JFileChooser choose;
    private File file;
    private JComboBox cb;
    private findString findString;

    public editItem() throws FileNotFoundException{
        this.filter = new FileNameExtensionFilter("Item File", "ite");
        name = new JFormattedTextField();
        price = new JFormattedTextField();
        cb = new JComboBox();
        choose = new JFileChooser();
        choose.setAcceptAllFileFilterUsed(false);
        choose.setFileFilter(filter);
        cb.setEditable(false);
        startItemPanel();
    }

    private void startItemPanel() throws FileNotFoundException{
        int choice = choose.showOpenDialog(this);
        if (choice == JFileChooser.APPROVE_OPTION){
            try{                  
                BufferedReader br = new BufferedReader(new FileReader(choose.getSelectedFile()));

                String line = br.readLine();
                int i = 0;
                while(line != null){
                    String[] parts = line.split("  ");
                    itemList[i]= line;
                    line = br.readLine();
                    item = new Item(parts[0], Double.parseDouble(parts[1]));
                    cb.addItem(item.getItemName());
                    i++;

                    Object[] message = { "Select Item to Edit", cb,};     
                    int option= JOptionPane.showConfirmDialog(this, message, "Edit Item Information", JOptionPane.OK_CANCEL_OPTION);
                    if (option == JOptionPane.OK_OPTION){
                        String selection = (String)cb.getSelectedItem();
                        findString = new findString(itemList, selection);
                        edit();
                    } 
                 }


             }catch(Exception ex){}
        }

    }

    private void edit() {
        name.setValue(itemList[findString.find()]);
        name.setValue(itemList[findString.find()+1]);
        Object[] message = {
          "Item Name", name,
          "Item Price", price,    
        };
        int option = JOptionPane.showConfirmDialog(this, message, "New Customer Information", JOptionPane.OK_CANCEL_OPTION);
        if (option == JOptionPane.OK_OPTION){
            item = new Item(name.getText(), Double.parseDouble(price.getText()));
            try{
                filePath = choose.getSelectedFile().getAbsolutePath();;
                if (!filePath.matches(".*\\.ite$")){
                    filePath += ".ite";
                }
                file = new File(filePath);                
                try(FileWriter fw = new FileWriter(filePath, false)){
                    int length = itemList.length;
                    for (int i = 0; i < (length); i++){
                        fw.write(itemList[i]);
                        i++;
                        fw.write("  " + itemList[i]);
                        fw.write("\n");
                    }
                }
            }catch (IOException ex){
            }
        }
    }
}

修改

我尝试将第一个JOptionPane放入我的edit()方法,并从JComboBox语句中传递itemListtry({{1}之外没有。

当我什么都不说时,我应该补充一下,我的意思是没有任何反应。我的while课程在Driver上调用了editItem课程actionListener,我发现这不是JButton课程。

我的main方法也没有完全完成,忘了将用户输入添加到已编辑的项目中!

0 个答案:

没有答案