단추없이 Timer를 사용하여 다른 JFrame을 호출 : 시간이 줄어들고 버튼없이 다른 JFrame이 열림. 도와주세요. netbeans에서 사용버튼없이 타이머를 사용하여 다른 JFrame 호출하기
-2
A
답변
13
귀하의 질문은 명확하지 않지만 여러 프레임을 사용하면 not recommended입니다. 대안으로 다음과 같은 모덜리스 대화 상자를 고려하십시오. 대화 상자의 JOptionPane
은 PropertyChangeEvent
을 청취하며 TIME_OUT
은 javax.swing.Timer
을 사용합니다. JOptionPane
버튼은 편리하지만 은 필요하지 않습니다..
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.Timer;
/**
* @see https://stackoverflow.com/a/12451673/230513
*/
public class JOptionTimeTest implements ActionListener, PropertyChangeListener {
private static final int TIME_OUT = 10;
private int count = TIME_OUT;
private final Timer timer = new Timer(1000, this);
private JDialog dialog = new JDialog();
private final JOptionPane optPane = new JOptionPane();
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new JOptionTimeTest().createGUI();
}
});
}
private void createGUI() {
JFrame frame = new JFrame("Title");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
timer.setCoalesce(false);
optPane.setMessage(message());
optPane.setMessageType(JOptionPane.INFORMATION_MESSAGE);
optPane.setOptionType(JOptionPane.DEFAULT_OPTION);
optPane.addPropertyChangeListener(this);
dialog.add(optPane);
dialog.pack();
frame.add(new JLabel(frame.getTitle(), JLabel.CENTER));
frame.pack();
frame.setVisible(true);
dialog.setLocationRelativeTo(frame);
dialog.setVisible(true);
timer.start();
}
public void propertyChange(PropertyChangeEvent e) {
String prop = e.getPropertyName();
if (JOptionPane.VALUE_PROPERTY.equals(prop)) {
thatsAllFolks();
}
}
public void actionPerformed(ActionEvent e) {
count--;
optPane.setMessage(message());
if (count == 0) {
thatsAllFolks();
}
timer.restart();
}
private String message() {
return "Closing in " + count + " seconds.";
}
private void thatsAllFolks() {
dialog.setVisible(false);
dialog.dispatchEvent(new WindowEvent(
dialog, WindowEvent.WINDOW_CLOSING));
}
}
+0
참고 자료 [튜토리얼 섹션] (http://docs.oracle.com/javase) /tutorial/uiswing/components/dialog.html#stayup). – trashgod
관련 문제
- 1. 버튼없이 웹보기 닫기
- 2. 다른 메서드에서 다른 JFrame 닫기
- 3. 다른 클래스 사용하기 JFrame
- 4. 다른 JFrame에서 JFrame 호출
- 5. 다른 JFrame에 JFrame 할당하기
- 6. 키보드를 사용하여 JFrame 닫기
- 7. 버튼을 사용하여 다른 클래스의 메서드 호출하기 iOS
- 8. 버튼없이 양식 올리기
- 9. JFrame을 다른 프로세스에 삽입 JFrame
- 10. 다른 클래스에서 가져온 JFrame/JPanel
- 11. 다른 JFrames 생성자에서 JFrame 만들기
- 12. Java - 다른 JFrame 같은 창에서
- 13. 다른 JFrame보다 우수한 JFrame 만들기
- 14. 다른 컨트롤러에서 컨트롤러 호출하기
- 15. 다른 클래스의 클래스 호출하기
- 16. 다른 클래스의 메소드 호출하기
- 17. 다른 곳에서 컨트롤러 호출하기
- 18. 다른 서블릿에서 서블릿 호출하기
- 19. 다른 활동 호출하기
- 20. 다른 액티비티의 메소드 호출하기
- 21. 다른 템플릿에서 템플릿 호출하기
- 22. 다른 함수를 인자로 호출하기
- 23. 다른 viewController에서 메서드 호출하기
- 24. 다른 폼에서 클래스 호출하기
- 25. 전에 다른 메소드 호출하기
- 26. 다른 뷰에서 클래스 호출하기
- 27. 다른 UIViewController에서 함수 호출하기
- 28. 다른 서블릿에서 서블릿 호출하기
- 29. 타이머를 사용하여 div를 뒤집기
- 30. 지연 GWT 타이머를 사용하여
질문은 무엇입니까? –
Google 번역기 등을 사용하여 질문을 만든 것으로 추측됩니다. 일종의 친절한 것처럼 보이기 때문입니다. –
[여러 JFrames 사용, 좋음/나쁨 연습]을 참조하십시오. (http://stackoverflow.com/a/9554657/418556) –