dialog が開いたら特定の JTextField にフォーカス
AllergyEditor が開いたら「要因」にフォーカスする。
client/AllergyEditor.java
dialog = pane.createDialog(inspector.getContext().getFrame(), ClientContext.getFrameTitle("アレルギー登録"));
//↓ dialog が開いたら FactorFld にフォーカスを当てる
dialog.addWindowListener(new WindowAdapter(){
@Override
public void windowOpened(WindowEvent e) {
view.getFactorFld().requestFocusInWindow();
}
});
//↑
PhysicalEditor が開いたら「体重」にフォーカスする。
client/PhysicalEditor.java
dialog = pane.createDialog(inspector.getContext().getFrame(), ClientContext.getFrameTitle("身長体重登録"));
//↓ dialog が開いたら WeightFld にフォーカスを当てる
dialog.addWindowListener(new WindowAdapter(){
@Override
public void windowOpened(WindowEvent e) {
view.getWeightFld().requestFocusInWindow();
}
});
//↑
患者検索タブをクリックしたらキーワードフィールドにフォーカスする。
plugin/PatientSearchImpl.java
public void enter() {
controlMenu();
//↓ 入ってきたら,キーワードフィールドにフォーカス
Runnable r = new Runnable() {
public void run() {
view.getKeywordFld().requestFocusInWindow();
}
};
SwingUtilities.invokeLater(r);
//↑
}
【09/10/10追記】上記だけだと,起動後最初の表示の時にフォーカスが取れないことがあった。Dolphin.java の変更で対応。
client/Dolphin.java
//
// タブの切り替えで plugin.enter() をコールする
//
tabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
int index = tabbedPane.getSelectedIndex();
MainComponent plugin = (MainComponent) providers.get(String.valueOf(index));
if (plugin.getContext() == null) {
plugin.setContext(Dolphin.this);
plugin.start();
tabbedPane.setComponentAt(index, plugin.getUI());
//↓
// } else {
// plugin.enter(); // これだと,start() した最初は enter() しないことになる
//↑
}
//↓
plugin.enter();
//↑
mediator.addChain(plugin);
}
});
マスター検索のとき,キーワードフィールドにフォーカスする。
order/MasterPanel.java
public void enter() {
setItemCount(tableModel.getObjectCount());
//↓
Runnable r = new Runnable() {
public void run() {
keywordField.requestFocusInWindow();
}
};
SwingUtilities.invokeLater(r);
//↑
}








