동작 (붉은색 글 표기)
1. 초기 더미데이터 2줄 테이블 생성
2. 시작 버튼을 누를시 timertask를 이용하여 주기적으로 테이블 값 변경
3. 정지 버튼 누를시 taimertask를 정지하여 테이블 값 변경을 취소
GUI 다루는건 항상 맘처럼 안되네요....
package test;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
public class TablePrint3 {
private JFrame frame;
private JTable table;
private JButton button;
private JButton button2;
ScheduledJob job;
Timer jobScheduler;
Integer a = 1;
public TablePrint3() {
initialize();
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
TablePrint3 window = new TablePrint3();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private void initialize() {
Object headers[] = { "aaa", "aaaa", "제목", "aa위" };
Object[][] rows = { { "one", "1", "3", "4" }, { "one", "1", "3", "4" } };
frame = new JFrame("Table Printing");
table = new JTable(rows, headers);
// 초기 더미 테이블 값 설정
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scrollPane = new JScrollPane(table);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
button = new JButton("정지");
button2 = new JButton("시작");
ActionListener startTask = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if( jobScheduler != null){
job = new ScheduledJob();
jobScheduler = new Timer();
jobScheduler.scheduleAtFixedRate(job, 1000, 3000);
}
}
}; //Time Task 시작
ActionListener openConfig = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jobScheduler.cancel();
//timetask 정지
jobScheduler = null;
Runtime rt = Runtime.getRuntime();
String exeFile = "C://Windows//System32//notepad.exe C://chc_conf.txt";
Process p;
try {
p = rt.exec(exeFile);
p.waitFor();
} catch (Exception ee) {
ee.printStackTrace();
}
}
};
button.addActionListener(openConfig);
button2.addActionListener(startTask);
frame.getContentPane().add(button, BorderLayout.SOUTH);
frame.getContentPane().add(button2, BorderLayout.NORTH);
frame.setSize(490, 592);
frame.setVisible(true);
}
class ScheduledJob extends TimerTask {
public void run() {
a++;
table.setValueAt(a, 1, 2);
//2째줄 3번째 칼럼의 수를 하나씩 올리는 부분
}
}
}
'학습자료 > Java' 카테고리의 다른 글
[java] 스케줄링 like cron(quartz Scheduler) (1) | 2015.07.22 |
---|---|
[java] 자바어플에 webview(javafx) 삽입 (0) | 2015.03.16 |
[java] timetask (0) | 2015.01.08 |
[java] 파일 실행 (0) | 2015.01.08 |
[java] html 파싱, jsoup 예제 (0) | 2015.01.08 |