35공개 클래스인터럽트GUI 확장JFrame은 ActionListener를 구현합니다.
36 비공개 최종GridBagConstraints 제약 조건;
38 비공개 최종JTextArea logTextArea;
39 비공개 최종JScrollPane logScrollPanel;
40 비공개 최종JButton runButton, stopButton,exitButton;
44 비공개 최종PrintStream printStream;
47 공개 정적 무효main(String[] args)
48SwingUtilities.invokeLater(
신규실행 가능()
56슈퍼(
"슬롯 게임 Java API - 인터럽트 GUI 예");
57setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
59getContentPane().setLayout(
신규GridBagLayout());
60getContentPane().setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
62제약조건 =
신규GridBagConstraints();
63constraints.insets =
신규삽입(5, 10, 5, 10);
64constraints.anchor = GridBagConstraints.NORTHWEST;
65constraints.weightx = 1;
68headsLabel =
신규JLabel(
"슬롯 게임 로그 -- 슬롯 게임 모델 라이브러리에서 [circpack] 모델 실행");
69constraints.fill = GridBagConstraints.HORIZONTAL;
72getContentPane().add(headsLabel, 제약 조건);
75logTextArea =
신규JTextArea(40, 140);
76logTextArea.setLineWrap(
참);
77logTextArea.setWrapStyleWord(
참);
78logTextArea.setEditable(
거짓);
79글꼴 글꼴 =
신규글꼴(
"고정 폭", Font.PLAIN, 12 );
80logTextArea.setFont(글꼴);
83printStream =
신규프린트스트림(
신규LogOutputStream(logTextArea));
84System.setOut(printStream);
85System.setErr(printStream);
87logScrollPanel =
신규JScrollPane(logTextArea);
88logScrollPanel.setMinimumSize(
신규차원(800, 500));
89logScrollPanel.setAutoscrolls(
사실);
90constraints.fill = GridBagConstraints.HORIZONTAL;
93constraints.gridwidth = 4;
94getContentPane().add(logScrollPanel, 제약 조건);
97runButton = makeButton(
"실행");
98constraints.fill = GridBagConstraints.HORIZONTAL;
100constraints.gridy = 2;
101constraints.gridwidth = 1;
102getContentPane().add(runButton, 제약조건);
104stopButton = makeButton(
"중지");
105stopButton.setEnabled(
거짓);
106constraints.fill = GridBagConstraints.HORIZONTAL;
107constraints.gridx = 2;
108constraints.gridy = 2;
109constraints.gridwidth = 1;
110getContentPane().add(stopButton, 제약 조건);
112exitButton = makeButton(
"종료");
113constraints.fill = GridBagConstraints.HORIZONTAL;
114constraints.gridx = 3;
115constraints.gridy = 2;
116constraints.gridwidth = 1;
117getContentPane().add(exitButton, 제약조건);
121파일 WorkingDirectory =
신규파일(System.getProperty(
"user.dir"),
"인터럽트GUI");
122workingDirectory.mkdir();
136 비공개JButton makeButton(문자열 캡션)
138b.setActionCommand(caption);
139b.addActionListener(
이것);
140getContentPane().add(b, 제약 조건);
145 공개 공허actionPerformed(ActionEvent e)
147 if (
"실행"== e.getActionCommand())
148runButton.setEnabled(
거짓);
149stopButton.setEnabled(
참);
150 if((근로자 ==
널) || (worker.getState()==Thread.State.TERMINATED))
151노동자 =
신규작업자(job, opt, printStream,
이것);
153}
그밖에 if (
"중지"== e.getActionCommand())
154runButton.setEnabled(
참);
155stopButton.setEnabled(
거짓);
157}
그밖에 if (
"종료"== e.getActionCommand())
158System.out.println(
"인터럽트 GUI 닫기 예...");
160 if(!worker.interrupted || (worker.getState() != Thread.State.TERMINATED))
167 비공개 무효reportJobTerminating()
168runButton.setEnabled(
참);
169stopButton.setEnabled(
거짓);
201caller.reportJobTerminating();
207 if(getState() != Thread.State.TERMINATED)