JTextField
とカスタム コンポーネント ( )の 2 つのコンポーネントを持つ単純な GUI がありMyComponent
ます。最初はテキスト フィールドにフォーカスがあり、カスタム コンポーネントをクリックすると、それにフォーカスが移ります。
現在、 を使用して手動でフォーカスを設定していますrequestFocusInWindow
が、focusLost
イベントが終了した後にイベントが発生しmousePressed
ます。focusLost
イベントが終了する前にイベントを発生させる方法はありますmousePressed
か?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Example {
public static void main(String[] args) {
JFrame frame = new JFrame("Example");
frame.setLayout(new FlowLayout());
JTextField textField = new JTextField(10);
textField.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent event) {
System.out.println("focusLost");
}
});
frame.add(textField);
frame.add(new MyComponent());
frame.pack();
frame.setVisible(true);
}
private static class MyComponent extends JComponent {
public MyComponent() {
setFocusable(true);
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent event) {
requestFocusInWindow();
System.out.println("mousePressed");
}
});
}
public Dimension getPreferredSize() {
return new Dimension(400, 300);
}
}
}