を変更する前に、私は新しいタブの選択範囲での変更が有効になる前に、ちょうどすぐに瞬間をキャプチャして、アクションを実行したいと思います。これは、スイングコンポーネントのフォーカスを失ったイベントに類似したものです。目的は、タブが変更されたときにいくつかのJTextFieldのテキストを外部ファイルに保存することです。ユーザーが別のタブをクリックするたびに、現在のタブの値が外部ファイルに書き込まれます。のJavaのJTabbedPane - アクションはすぐにJTabbedPaneのを使用して、選択したタブ
私は、タブの変更を追跡するためにChangeListenerを使用してきたが、私は必要なものを行うための方法を発見していません。どのように次の簡単な例でそれを達成するための任意のアイデアですか?
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class TabSample {
static void add(JTabbedPane tabbedPane, String label) {
JButton button = new JButton(label);
tabbedPane.addTab(label, button);
}
public static void main(String args[]) {
JFrame frame = new JFrame("TabSample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTabbedPane tabbedPane = new JTabbedPane();
String titles[] = { "Geometry", "Materials", "Analysis"};
for (int i = 0, n = titles.length; i < n; i++) {
add(tabbedPane, titles[i]);
}
ChangeListener changeListener = new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource();
int index = sourceTabbedPane.getSelectedIndex();
System.out.println("Tab changed to: " + sourceTabbedPane.getTitleAt(index));
}
};
tabbedPane.addChangeListener(changeListener);
frame.add(tabbedPane, BorderLayout.CENTER);
frame.setSize(400, 150);
frame.setVisible(true);
}
}
私はあなたがそれを説明することができ、アクションを実行することができる方法を得ることはありませんか?たぶん、質問が十分ではなかった、私はそれを編集しました。 – David
@David:上記の私の編集をご覧ください。私たちはボランティアであり、提供されたヘルプは私どもの時間に行われていることを理解してください。 –
ご迷惑をおかけして申し訳ありません。私は、助けたい人のために簡単にできるように、できるだけ多くの質問を簡素化したいと思っていました。それでも、私はChangeListenerを使ってそれを行う方法はわかりません。 – David