로드 중...
검색 중...
일치하는 항목 없음
InterruptGUI.java
1패키지com.슬롯 게임examples.interrupt;
2
3가져오기java.awt.ComponentOrientation;
4가져오기java.awt.Dimension;
5가져오기java.awt.Font;
6가져오기java.awt.GridBagConstraints;
7가져오기java.awt.GridBagLayout;
8가져오기java.awt.Insets;
9가져오기java.awt.event.ActionEvent;
10가져오기java.awt.event.ActionListener;
11가져오기java.io.파일;
12가져오기java.io.IOException;
13가져오기java.io.OutputStream;
14가져오기java.io.PrintStream;
15
16가져오기javax.swing.JButton;
17가져오기javax.swing.JFrame;
18가져오기javax.swing.JLabel;
19가져오기javax.swing.JScrollPane;
20가져오기javax.swing.JTextArea;
21가져오기javax.swing.SwingUtilities;
22
23가져오기 com.감스.API.GAMSJob;
26가져오기 com.감스.API.GAMSWorkspaceInfo;
27
35공개 클래스인터럽트GUI 확장JFrame은 ActionListener를 구현합니다.
36 비공개 최종GridBagConstraints 제약 조건;
37 비공개 최종JLabel 헤드라벨;
38 비공개 최종JTextArea logTextArea;
39 비공개 최종JScrollPane logScrollPanel;
40 비공개 최종JButton runButton, stopButton,exitButton;
41 비공개 최종 슬롯 게임작업공간ws;
42 비공개 최종 GAMSJob직업;
43 비공개 최종GAMSOptions 선택;
44 비공개 최종PrintStream printStream;
45 비공개노동자;
46
47 공개 정적 무효main(String[] args)
48SwingUtilities.invokeLater(신규실행 가능()
49 공개 공허실행()
50 신규 인터럽트GUI();
51}
52});
53}
54
55 공개 인터럽트GUI() {
56슈퍼("슬롯 게임 Java API - 인터럽트 GUI 예");
57setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
58
59getContentPane().setLayout(신규GridBagLayout());
60getContentPane().setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
61
62제약조건 =신규GridBagConstraints();
63constraints.insets =신규삽입(5, 10, 5, 10);
64constraints.anchor = GridBagConstraints.NORTHWEST;
65constraints.weightx = 1;
66
67 // 라벨 생성
68headsLabel =신규JLabel("슬롯 게임 로그 -- 슬롯 게임 모델 라이브러리에서 [circpack] 모델 실행");
69constraints.fill = GridBagConstraints.HORIZONTAL;
70constraints.gridx = 0;
71constraints.gridy = 0;
72getContentPane().add(headsLabel, 제약 조건);
73
74 // 실행 중인 작업 로그를 표시하는 텍스트 영역 생성
75logTextArea =신규JTextArea(40, 140);
76logTextArea.setLineWrap();
77logTextArea.setWrapStyleWord();
78logTextArea.setEditable(거짓);
79글꼴 글꼴 =신규글꼴("고정 폭", Font.PLAIN, 12 );
80logTextArea.setFont(글꼴);
81
82 // 실행 중인 작업 로그를 출력하기 위해 스크롤 가능한 텍스트 패널을 생성합니다.
83printStream =신규프린트스트림(신규LogOutputStream(logTextArea));
84System.setOut(printStream);
85System.setErr(printStream);
86
87logScrollPanel =신규JScrollPane(logTextArea);
88logScrollPanel.setMinimumSize(신규차원(800, 500));
89logScrollPanel.setAutoscrolls(사실);
90constraints.fill = GridBagConstraints.HORIZONTAL;
91constraints.gridx = 0;
92constraints.gridy = 1;
93constraints.gridwidth = 4;
94getContentPane().add(logScrollPanel, 제약 조건);
95
96 // 버튼 생성
97runButton = makeButton("실행");
98constraints.fill = GridBagConstraints.HORIZONTAL;
99constraints.gridx = 0;
100constraints.gridy = 2;
101constraints.gridwidth = 1;
102getContentPane().add(runButton, 제약조건);
103
104stopButton = makeButton("중지");
105stopButton.setEnabled(거짓);
106constraints.fill = GridBagConstraints.HORIZONTAL;
107constraints.gridx = 2;
108constraints.gridy = 2;
109constraints.gridwidth = 1;
110getContentPane().add(stopButton, 제약 조건);
111
112exitButton = makeButton("종료");
113constraints.fill = GridBagConstraints.HORIZONTAL;
114constraints.gridx = 3;
115constraints.gridy = 2;
116constraints.gridwidth = 1;
117getContentPane().add(exitButton, 제약조건);
118
119 // 슬롯 게임 작업공간 및 작업 초기화
120 GAMSWorkspaceInfowsInfo =신규 GAMSWorkspaceInfo();
121파일 WorkingDirectory =신규파일(System.getProperty("user.dir"), "인터럽트GUI");
122workingDirectory.mkdir();
123wsInfo.setWorkingDirectory(workingDirectory.getAbsolutePath());
124ws =신규 슬롯 게임작업공간(wsInfo);
125
126 // 해결하는 데 시간이 필요한 MIP 사용
127직업 = ws.addJobFromGamsLib("서클팩");
128opt = ws.추가옵션();
129선택.setAllModelTypes("scip");
130
131 // 창 표시
132팩();
133setVisible(사실);
134}
135
136 비공개JButton makeButton(문자열 캡션)
137J버튼 b =신규J버튼(캡션);
138b.setActionCommand(caption);
139b.addActionListener(이것);
140getContentPane().add(b, 제약 조건);
141 반환b;
142}
143
144@재정의
145 공개 공허actionPerformed(ActionEvent e)
146
147 if ("실행"== e.getActionCommand())
148runButton.setEnabled(거짓);
149stopButton.setEnabled();
150 if((근로자 ==) || (worker.getState()==Thread.State.TERMINATED))
151노동자 =신규작업자(job, opt, printStream,이것);
152worker.start();
153}그밖에 if ("중지"== e.getActionCommand())
154runButton.setEnabled();
155stopButton.setEnabled(거짓);
156worker.interrupt();
157}그밖에 if ("종료"== e.getActionCommand())
158System.out.println("인터럽트 GUI 닫기 예...");
159 if(노동자 !=) {
160 if(!worker.interrupted || (worker.getState() != Thread.State.TERMINATED))
161System.exit(-1);
162}
163System.exit(0);
164}
165}
166
167 비공개 무효reportJobTerminating()
168runButton.setEnabled();
169stopButton.setEnabled(거짓);
170}
171
173 정적 클래스노동자확장스레드
174 GAMSJob직업;
175GAMSOptions 옵션;
176PrintStream 출력;
177 부울중단됨;
178 인터럽트GUI발신자;
179
185 공개노동자(GAMSJobjb, GAMSOptions 선택, PrintStream 출력,인터럽트GUIc)
186중단됨 =거짓;
187직업 = jb;
188옵션 = 선택;
189출력 = 출력;
190발신자 = c;
191}
192
194@재정의
195 공개 무효실행()
196 시도해 보세요{
197직업.실행(옵션, 출력);
198}잡기(예외 e)
199e.printStackTrace();
200}마지막으로{
201caller.reportJobTerminating();
202}
203}
204
206 공개 무효인터럽트()
207 if(getState() != Thread.State.TERMINATED)
208중단됨 = 작업.인터럽트();
209}
210}
211}
212
214클래스LogOutputStream확장출력스트림
215 비공개JTextArea 텍스트Area;
216
217 공개LogOutputStream(JTextArea textArea)
218this.textArea = textArea;
219}
220
221@재정의
222 공개 무효쓰기(intb)던지기IO예외
223textArea.append(String.valueOf((문자)b));
224textArea.setCaretPosition(textArea.getDocument().getLength());
225}
226}
void setAllModelTypes(문자열 값)
void setWorkingDirectory(문자열 디렉토리)
GAMSJob addJobFromGamsLib(문자열 모델 이름)
이 작은 예는 그래픽 사용자 인터페이스에서 슬롯 게임 모델을 실행하는 방법을 보여줍니다.