Cập nhật: Vì vậy, bạn muốn đợi người dùng nhập nội dung nào đó từ GUI. Điều này là có thể nhưng cần phải được đồng bộ vì GUI chạy trong một chuỗi khác.
Vì vậy, các bước như sau:
- Tạo một "chủ sở hữu" đối tượng mà deligates kết quả từ GUI để "logic" chủ đề
- Các "logic" chủ đề chờ đợi cho đầu vào (sử dụng
holder.wait()
)
- Khi người dùng nhập văn bản, nó đồng bộ hóa đối tượng "chủ" và cho kết quả + thông báo chuỗi "logic" (với
holder.notify()
)
- Luồng "logic" được giải phóng khỏi khóa và tiếp tục.
Full dụ:
public static void main(String... args) throws Exception {
final List<Integer> holder = new LinkedList<Integer>();
final JFrame frame = new JFrame("Test");
final JTextField field = new JTextField("Enter some int + press enter");
frame.add(field);
field.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
synchronized (holder) {
holder.add(Integer.parseInt(field.getText()));
holder.notify();
}
frame.dispose();
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
// "logic" thread
synchronized (holder) {
// wait for input from field
while (holder.isEmpty())
holder.wait();
int nextInt = holder.remove(0);
System.out.println(nextInt);
//....
}
}
vẫn không hiểu câu hỏi - ý bạn là gì khi "giữ thực thi"? Ngoài ra: đọc một hướng dẫn Swing cơ bản và tài liệu api của textfield (gợi ý: setAction có thể đáng xem :-) – kleopatra