Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- iBatis
- nodejs express
- docker
- 주식이야기
- express for node.js
- 나의 프로젝트
- 도커
- php
- 디즈니씨
- php thumbnail
- flex3
- Lift
- scala
- 책이야기
- C/C++
- 스킨 스쿠버
- Node.js
- Cross
- rss
- ror실행
- 명사 뽑아내기
- 메일왕창보내는법
- 나의 취미
- 명사 분석기
- Eclipse
- ejb
- node.js web framework
- 명사 추출기
- 베트남어
- ajax
Archives
- Today
- Total
nkdk의 세상
자바 Language 17일째 스윙에 대하여... 본문
package Swing;
import java.awt.*; // < - awt 를 호출한다.
import java.awt.event.*; // 이벤트를 만든다.
import javax.swing.*; // <- 스윙을 추가한다.
import javax.swing.event.*; // <- 스윙에 관련된 이벤트를 만든다.
// 아래 쪽에 JFrame 을 상속 받는다.(버튼을 사용하기 위해 액션 리스너를 부른다.)
public class SwingTest extends JFrame implements ActionListener{
JButton btnClick; // 버튼을 만든다.
int count;
JLabel lblDisp; // 카운트 된 것을 화면에 뿌려 지기 위해 만들어 주었음
public SwingTest() {
btnClick=new JButton("클릭(C)");
btnClick.setMnemonic(KeyEvent.VK_C); // <-B라는 버튼에 대해서 Mme키를 주었다. B라는 것이 표시
btnClick.addActionListener(this);
JPanel pn=new JPanel(); // 패널을 하나 만든다.
pn.setBorder(BorderFactory.createEmptyBorder(30,30,10,30)); // pn에 보더를 준다.
pn.setLayout(new GridLayout(2,1)); // <<-- 2행 1열 그리드 레이 아웃을 만든다.
pn.add(btnClick); // 첫번째에 이것을 넣는다.
lblDisp=new JLabel("버튼 클릭 횟수 : "+ count);
pn.add(lblDisp);
this.getContentPane().add(pn, BorderLayout.CENTER); // 이것을 ContentPane에다가 얹어 놓는다.
setBounds(100,100,300,300);
setVisible(true);
// swing에서의 또 다른 종료 방법
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new SwingTest();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btnClick)) {
count++;
lblDisp.setText("버튼 클릭 횟수 : "+ count);
}
}
}
package Swing;
import javax.swing.*;
import java.awt.*;
public class ShowProgress extends JPanel{
JProgressBar progBar;
JLabel lbl;
public ShowProgress() { // 패널 상속이기 때문에 얼마든지 add 될 수 있다.
setLayout(new BorderLayout());
progBar = new JProgressBar();
progBar.setMinimum(0);
progBar.setMaximum(100);
progBar.setValue(0);
lbl=new JLabel("");
add(progBar, "Center");
add(lbl,"South");
}
public void go() {
try{
for(int i=0;i<=100;i++) {
progBar.setValue(i);
Thread.sleep(30); // 데몬 스레드 임
lbl.setText(i+"%가 진행 중");
}
}catch (Exception e) {
lbl.setText("진행이 중지");
}
}
public static void main(String[] args) {
}
}
package Swing;
import java.awt.*; // < - awt 를 호출한다.
import java.awt.event.*; // 이벤트를 만든다.
import javax.swing.*; // <- 스윙을 추가한다.
import javax.swing.event.*; // <- 스윙에 관련된 이벤트를 만든다.
import javax.swing.border.*;
// 패널에 넣고 프레임에 맨 나중에 넣는 방식을 사용한다. 패널은 기본적으로 플로우 레이 아
// 아래의 사용 방법을 권장한다.
public class SwingTest2 extends JPanel{
BevelBorder border;
EtchedBorder eborder;
TitledBorder tborder;
JLabel label;
JPanel pn1, pn2, pn3;
JButton btn;
AbstractButton button; // JToggleButtle 지정한다.
public SwingTest2() {
this.setLayout(new GridLayout(3,4,10,5)); // 3행 4열 10너비 5너비 정도 띄어 준다.
pn1=new JPanel();
label=new JLabel("보더 없음", JLabel.CENTER);
pn1.add(label);
label=new JLabel("bevel border", JLabel.CENTER);
border=new BevelBorder(BevelBorder.RAISED);;
label.setBorder(border);
pn1.add(label);
label=new JLabel("etched border", JLabel.CENTER);
eborder=new EtchedBorder(BevelBorder.RAISED);
label.setBorder(eborder);
pn1.add(label);
label=new JLabel("titled border", JLabel.CENTER);
tborder=new TitledBorder("제목");
tborder.setTitlePosition(TitledBorder.ABOVE_TOP); // // 위쪽에 제목이 생긴다.
tborder.setTitleJustification(TitledBorder.CENTER); // 정렬 방식을 위해 넣는다.
label.setBorder(eborder); // awt 에는 이런 것이 없다.
pn1.add(label);
this.add(pn1); // JPanel 에다가 add 한 것이다.
pn2=new JPanel();
btn=new JButton("배");
pn2.add(btn);
btn=new JButton("사과");
pn2.add(btn);
btn=new JButton("딸기");
pn2.add(btn);
btn=new JButton("포도");
pn2.add(btn);
this.add(pn2);
btn.setToolTipText("풍선도움말"); // 풍선 도움말을 나오게 할 때 사용한다.
// 이미지 버튼 사용 하기
pn3=new JPanel();
// 이미지 아이콘 클라스를 먼저 이용해야 한다.
ImageIcon btnImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME1.GIF");
ImageIcon pressImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME3.GIF");
ImageIcon selfImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME5.GIF");
ImageIcon disableImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME7.GIF");
ImageIcon rolloverImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME9.GIF");
ImageIcon selrollImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME1.GIF");
button=new JButton(); // jbutton 을 설정해줌
button.setIcon(btnImage);
button.setPressedIcon(pressImage);
pn3.add(button);
button=new JButton(); // jbutton 을 설정해줌
button.setIcon(btnImage);
button.setDisabledIcon(disableImage);
button.setEnabled(false); // true 와 false 일 때의 상태는 서로 다르다.
pn3.add(button);
button=new JToggleButton(); // jbutton 을 설정해줌
button.setIcon(btnImage);
button.setSelectedIcon(selfImage); // 선택 했을 때의 그림
button.setRolloverIcon(rolloverImage); // 롤오버 했을때 그림
button.setRolloverSelectedIcon(selrollImage); // 선택된 아이콘에 대한 이미
pn3.add(button);
this.add(pn3);
}
public Dimension getPreferredSize() {
return new Dimension(500,400);
}
public static void main(String[] args) {
JFrame frame=new JFrame("스윙 연습"); // 포함 관계로 하려 한다.
SwingTest2 sw=new SwingTest2();
frame.getContentPane().add(sw,"Center");
// 크기를 잡아서 보이게 해 주어야 한다.
frame.setSize(sw.getPreferredSize());
frame.setLocation(200,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 기본적인 종료 방
// 이것이 일반인들이 권장하는 방법이다.
}
}
package Swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
public class SwingTest3 extends JPanel implements ChangeListener, ActionListener{
JButton btn1, btn2; // 툴바용
JComboBox combo; // 툴바용
JTabbedPane pane; // 탭
ShowProgress sp; // 프로그래스를 추가 한다.
public SwingTest3() {
this.setLayout(new BorderLayout());
// 여기서 부터 툴바에 대한 내용이 나온다. 뺏다 꼇다 할 수 있다.
JToolBar bar=new JToolBar();
JPanel pn=new JPanel();
pn.setLayout(new GridLayout(1,3));
btn1=new JButton();
ImageIcon img1=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME2.GIF");
btn1.setIcon(img1);
bar.add(btn1);
combo=new JComboBox();
combo.addItem("One");
combo.addItem("Two");
bar.add(combo);
bar.addSeparator(); // 경계선 나
btn2=new JButton();
ImageIcon img2=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME2.GIF");
btn2.setIcon(img2);
btn2.addActionListener(this);
bar.add(btn2);
pn.add(bar);
this.add("North", pn);
// 다양한 툴바를 뿌리고 싶을 때는 탭 을 사용한다.
pane=new JTabbedPane();
JPanel tabpn=new JPanel();
tabpn.add(new JLabel("첫번째 탭"));
pane.addTab("첫번째", tabpn);
tabpn=new JPanel();
tabpn.add(new JLabel("두번째 탭"));
sp=new ShowProgress(); // 프로그레스 바를 만든다(진행이 어느 정도 되었는지 확인)
tabpn.add(sp); // 패널 속에 담아 버린다
pane.addTab("두번째", tabpn);
tabpn=new JPanel();
tabpn.add(new JLabel("세번째 탭"));
pane.addTab("세번째", tabpn);
pane.setSelectedIndex(0);
pane.requestFocus(); // 첫번째 탭을 선택해 놓는다. 선택 안 해 놓으면 앞에 글자가 안 보임
pane.addChangeListener(this); // 탭을 누르면 반응 한다.
this.add("Center", pane);
}
public static void main(String[] args) {
JFrame frame=new JFrame("스윙 연습3"); // 포함 관계로 하려 한다.
SwingTest3 sw=new SwingTest3();
frame.getContentPane().add(sw,"Center");
// 크기를 잡아서 보이게 해 주어야 한다.
frame.setSize(sw.getPreferredSize());
frame.setLocation(200,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 기본적인 종료 방
// 이것이 일반인들이 권장하는 방법이다.
}
public void stateChanged(ChangeEvent e) {
int index=pane.getSelectedIndex();
System.out.println(pane.getTitleAt(index));
}
public Dimension getPreferredSize(){
return new Dimension(500,400);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btn2)) sp.go();
}
}
에 내용이 되겠네요.
import java.awt.*; // < - awt 를 호출한다.
import java.awt.event.*; // 이벤트를 만든다.
import javax.swing.*; // <- 스윙을 추가한다.
import javax.swing.event.*; // <- 스윙에 관련된 이벤트를 만든다.
// 아래 쪽에 JFrame 을 상속 받는다.(버튼을 사용하기 위해 액션 리스너를 부른다.)
public class SwingTest extends JFrame implements ActionListener{
JButton btnClick; // 버튼을 만든다.
int count;
JLabel lblDisp; // 카운트 된 것을 화면에 뿌려 지기 위해 만들어 주었음
public SwingTest() {
btnClick=new JButton("클릭(C)");
btnClick.setMnemonic(KeyEvent.VK_C); // <-B라는 버튼에 대해서 Mme키를 주었다. B라는 것이 표시
btnClick.addActionListener(this);
JPanel pn=new JPanel(); // 패널을 하나 만든다.
pn.setBorder(BorderFactory.createEmptyBorder(30,30,10,30)); // pn에 보더를 준다.
pn.setLayout(new GridLayout(2,1)); // <<-- 2행 1열 그리드 레이 아웃을 만든다.
pn.add(btnClick); // 첫번째에 이것을 넣는다.
lblDisp=new JLabel("버튼 클릭 횟수 : "+ count);
pn.add(lblDisp);
this.getContentPane().add(pn, BorderLayout.CENTER); // 이것을 ContentPane에다가 얹어 놓는다.
setBounds(100,100,300,300);
setVisible(true);
// swing에서의 또 다른 종료 방법
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new SwingTest();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btnClick)) {
count++;
lblDisp.setText("버튼 클릭 횟수 : "+ count);
}
}
}
package Swing;
import javax.swing.*;
import java.awt.*;
public class ShowProgress extends JPanel{
JProgressBar progBar;
JLabel lbl;
public ShowProgress() { // 패널 상속이기 때문에 얼마든지 add 될 수 있다.
setLayout(new BorderLayout());
progBar = new JProgressBar();
progBar.setMinimum(0);
progBar.setMaximum(100);
progBar.setValue(0);
lbl=new JLabel("");
add(progBar, "Center");
add(lbl,"South");
}
public void go() {
try{
for(int i=0;i<=100;i++) {
progBar.setValue(i);
Thread.sleep(30); // 데몬 스레드 임
lbl.setText(i+"%가 진행 중");
}
}catch (Exception e) {
lbl.setText("진행이 중지");
}
}
public static void main(String[] args) {
}
}
package Swing;
import java.awt.*; // < - awt 를 호출한다.
import java.awt.event.*; // 이벤트를 만든다.
import javax.swing.*; // <- 스윙을 추가한다.
import javax.swing.event.*; // <- 스윙에 관련된 이벤트를 만든다.
import javax.swing.border.*;
// 패널에 넣고 프레임에 맨 나중에 넣는 방식을 사용한다. 패널은 기본적으로 플로우 레이 아
// 아래의 사용 방법을 권장한다.
public class SwingTest2 extends JPanel{
BevelBorder border;
EtchedBorder eborder;
TitledBorder tborder;
JLabel label;
JPanel pn1, pn2, pn3;
JButton btn;
AbstractButton button; // JToggleButtle 지정한다.
public SwingTest2() {
this.setLayout(new GridLayout(3,4,10,5)); // 3행 4열 10너비 5너비 정도 띄어 준다.
pn1=new JPanel();
label=new JLabel("보더 없음", JLabel.CENTER);
pn1.add(label);
label=new JLabel("bevel border", JLabel.CENTER);
border=new BevelBorder(BevelBorder.RAISED);;
label.setBorder(border);
pn1.add(label);
label=new JLabel("etched border", JLabel.CENTER);
eborder=new EtchedBorder(BevelBorder.RAISED);
label.setBorder(eborder);
pn1.add(label);
label=new JLabel("titled border", JLabel.CENTER);
tborder=new TitledBorder("제목");
tborder.setTitlePosition(TitledBorder.ABOVE_TOP); // // 위쪽에 제목이 생긴다.
tborder.setTitleJustification(TitledBorder.CENTER); // 정렬 방식을 위해 넣는다.
label.setBorder(eborder); // awt 에는 이런 것이 없다.
pn1.add(label);
this.add(pn1); // JPanel 에다가 add 한 것이다.
pn2=new JPanel();
btn=new JButton("배");
pn2.add(btn);
btn=new JButton("사과");
pn2.add(btn);
btn=new JButton("딸기");
pn2.add(btn);
btn=new JButton("포도");
pn2.add(btn);
this.add(pn2);
btn.setToolTipText("풍선도움말"); // 풍선 도움말을 나오게 할 때 사용한다.
// 이미지 버튼 사용 하기
pn3=new JPanel();
// 이미지 아이콘 클라스를 먼저 이용해야 한다.
ImageIcon btnImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME1.GIF");
ImageIcon pressImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME3.GIF");
ImageIcon selfImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME5.GIF");
ImageIcon disableImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME7.GIF");
ImageIcon rolloverImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME9.GIF");
ImageIcon selrollImage=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME1.GIF");
button=new JButton(); // jbutton 을 설정해줌
button.setIcon(btnImage);
button.setPressedIcon(pressImage);
pn3.add(button);
button=new JButton(); // jbutton 을 설정해줌
button.setIcon(btnImage);
button.setDisabledIcon(disableImage);
button.setEnabled(false); // true 와 false 일 때의 상태는 서로 다르다.
pn3.add(button);
button=new JToggleButton(); // jbutton 을 설정해줌
button.setIcon(btnImage);
button.setSelectedIcon(selfImage); // 선택 했을 때의 그림
button.setRolloverIcon(rolloverImage); // 롤오버 했을때 그림
button.setRolloverSelectedIcon(selrollImage); // 선택된 아이콘에 대한 이미
pn3.add(button);
this.add(pn3);
}
public Dimension getPreferredSize() {
return new Dimension(500,400);
}
public static void main(String[] args) {
JFrame frame=new JFrame("스윙 연습"); // 포함 관계로 하려 한다.
SwingTest2 sw=new SwingTest2();
frame.getContentPane().add(sw,"Center");
// 크기를 잡아서 보이게 해 주어야 한다.
frame.setSize(sw.getPreferredSize());
frame.setLocation(200,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 기본적인 종료 방
// 이것이 일반인들이 권장하는 방법이다.
}
}
package Swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
public class SwingTest3 extends JPanel implements ChangeListener, ActionListener{
JButton btn1, btn2; // 툴바용
JComboBox combo; // 툴바용
JTabbedPane pane; // 탭
ShowProgress sp; // 프로그래스를 추가 한다.
public SwingTest3() {
this.setLayout(new BorderLayout());
// 여기서 부터 툴바에 대한 내용이 나온다. 뺏다 꼇다 할 수 있다.
JToolBar bar=new JToolBar();
JPanel pn=new JPanel();
pn.setLayout(new GridLayout(1,3));
btn1=new JButton();
ImageIcon img1=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME2.GIF");
btn1.setIcon(img1);
bar.add(btn1);
combo=new JComboBox();
combo.addItem("One");
combo.addItem("Two");
bar.add(combo);
bar.addSeparator(); // 경계선 나
btn2=new JButton();
ImageIcon img2=new ImageIcon("D:/javasou/javas/basic/gui/duke/FRAME2.GIF");
btn2.setIcon(img2);
btn2.addActionListener(this);
bar.add(btn2);
pn.add(bar);
this.add("North", pn);
// 다양한 툴바를 뿌리고 싶을 때는 탭 을 사용한다.
pane=new JTabbedPane();
JPanel tabpn=new JPanel();
tabpn.add(new JLabel("첫번째 탭"));
pane.addTab("첫번째", tabpn);
tabpn=new JPanel();
tabpn.add(new JLabel("두번째 탭"));
sp=new ShowProgress(); // 프로그레스 바를 만든다(진행이 어느 정도 되었는지 확인)
tabpn.add(sp); // 패널 속에 담아 버린다
pane.addTab("두번째", tabpn);
tabpn=new JPanel();
tabpn.add(new JLabel("세번째 탭"));
pane.addTab("세번째", tabpn);
pane.setSelectedIndex(0);
pane.requestFocus(); // 첫번째 탭을 선택해 놓는다. 선택 안 해 놓으면 앞에 글자가 안 보임
pane.addChangeListener(this); // 탭을 누르면 반응 한다.
this.add("Center", pane);
}
public static void main(String[] args) {
JFrame frame=new JFrame("스윙 연습3"); // 포함 관계로 하려 한다.
SwingTest3 sw=new SwingTest3();
frame.getContentPane().add(sw,"Center");
// 크기를 잡아서 보이게 해 주어야 한다.
frame.setSize(sw.getPreferredSize());
frame.setLocation(200,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 기본적인 종료 방
// 이것이 일반인들이 권장하는 방법이다.
}
public void stateChanged(ChangeEvent e) {
int index=pane.getSelectedIndex();
System.out.println(pane.getTitleAt(index));
}
public Dimension getPreferredSize(){
return new Dimension(500,400);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btn2)) sp.go();
}
}
에 내용이 되겠네요.