1

こんにちは、JButton次のように定義されています。

private JButton btnExp;

private JPanel jpShow = new JPanel();
jpShow.setLayout(null);

btnExp = new JButton("Export");
btnExp.setBounds(100, 250, 120, 25);

jpShow.add(jspTable);
jpShow.add(btnExp);
//Adding Panel to Window.
getContentPane().add(jpShow);

public void actionPerformed(ActionEvent ae) {
    try{
        Object obj = ae.getSource();
        if (obj == btnExp) {
            FileWriter excel = new FileWriter("File.TSV");

            for(int i = 0; i < dtmCustomer.getColumnCount(); i++){
                excel.write(dtmCustomer.getColumnName(i) + "\t");
            }
            excel.write("\n");

            for(int i=0; i< dtmCustomer.getRowCount(); i++) {
                for(int j=0; j < dtmCustomer.getColumnCount(); j++) {
                    excel.write(dtmCustomer.getValueAt(i,j).toString()+"\t");
                }
                excel.write("\n");
            }
            excel.close();
            JOptionPane.showMessageDialog(this, "File Written","Success", JOptionPane.PLAIN_MESSAGE);
        }
    }catch(Exception e){
        System.out.println(e);
    }
}

ユーザーがボタンをクリックした後にエクスポートしようとしてJTableいますが、何も起こらず、例外も発生しません。私はそれを間違った方法でやっていますか?

4

2 に答える 2

3

ボタンに ActionListener を正しく追加していません。正しい方法は次のとおりです。

btnExp.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    // add here the contents in your actionPerformed method
  }
})
于 2012-08-23T15:32:03.130 に答える
2
  1. あなたが投稿したコードはコンパイルさえしません
  2. @Danが彼の回答ですでに示したように、を追加する必要がありActionListenerますJButton
  3. FileWriterブロック内で必ず閉じる必要がありますfinally。これで、例外が発生しても閉じられません
  4. Event Dispatch Threadでテーブルをエクスポートすると、UI が応答しなくなります。の使用を検討してくださいSwingWorker。詳細については、Swing の同時実行のチュートリアルを参照してください。
  5. setLayout( null )との使用は避けてくださいsetBoundsLayoutManager代わりにまともなものを使用してください
于 2012-08-23T15:44:01.760 に答える