[Java] Swing

 ● Swing

     1) 패키지명이 javax로 시작 : javax.swing.* 

     



Swing으로 버튼 이미지 변경 예제


package swing;


import java.awt.FlowLayout;


import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;


public class SwingTest1 extends JFrame{

private JButton btn;

private ImageIcon icon, icon2;  //이미지 저장창고

public SwingTest1() {

setLayout(new FlowLayout());

//addWindowListener(new WindowExit(this));  <- awt에서는 사용하지만 Swing에서는 다른 기능 사용

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Swing에서 사용하는 X버튼 클릭할때 종료

btn = new JButton("버튼");

        icon = new ImageIcon(getClass().getResource("/images/duke_box.gif")); 

icon2 = new ImageIcon(getClass().getResource("/images/duke_flip.gif")); 

btn.setIcon(icon); // setIcon은 awt에는 없고 Swing에 있는 기능

// 마우스로 버튼을 눌렀을때 이미지 변화, 버튼에 이미지를 끼워넣을수 있다.                                      btn.setPressedIcon(icon2); 

add(btn);

}

public static void main(String[] args) {

SwingTest1 test = new SwingTest1();

test.setSize(300,400);

test.setVisible(true);

}

}



실행결과↓




Swing으로 테두리 변경 예제



package swing;


import java.awt.Color;

import java.awt.FlowLayout;


import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.border.BevelBorder;

import javax.swing.border.EtchedBorder;


//Swing 테두리 예제

public class SwingTest2 extends JFrame{

private JButton btn;

private ImageIcon icon;

private JLabel lab;

public SwingTest2() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Swing에서 사용하는 X버튼 클릭할때 종료

setLayout(new FlowLayout());

btn = new JButton("버튼");

icon = new ImageIcon(getClass().getResource("/images/duke_hips.gif"));

lab = new JLabel("스윙 라벨입니다.", icon, JLabel.CENTER);

//lab.setBorder(new EtchedBorder(Color.BLUE, Color.red));

lab.setBorder(new BevelBorder(BevelBorder.LOWERED));

add(btn);

add(lab);

}

public static void main(String[] args) {

SwingTest2 test = new SwingTest2();

test.setSize(300,400);

test.setVisible(true);

}

}




실행결과↓




Swing 이벤트 예제


package swing;


import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;


//Swing 이벤트 예제

public class SwingTest3 extends JFrame implements ActionListener{

private JTextField field;

private JButton btnOk;

private JLabel lab;

public SwingTest3() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Swing에서 사용하는 X버튼 클릭할때 종료

field = new JTextField(30);

btnOk = new JButton("확인");

lab = new JLabel("안녕하세요..");

add("Center",field);

add("East", btnOk);

add("South", lab);

btnOk.addActionListener(this);

}

@Override

public void actionPerformed(ActionEvent arg0) {

if(field.getText().isEmpty()) {

//데이터를 입력하지 않으면 메세지를 띄움

//JOptionPane.showMessageDialog(null, "반드시 데이터를 입력하시오");

//데이터를 입력하지 않으면 따로 입력값을 받을때 사용함

//String name = JOptionPane.showInputDialog("이름을 입력하세요.");

//lab.setText(name);

//데이터를 입력하지 않으면 예/아니오 메세지를 띄움

int result = JOptionPane.showConfirmDialog(null, "예/아니오 선택");

lab.setText(new String().valueOf(result));//정수형을 -> 문자형으로 변환

}else {

lab.setText(field.getText());

}

}




public static void main(String[] args) {

SwingTest3 test = new SwingTest3();

test.setSize(300,100);

test.setVisible(true);

}

}


실행결과↓



      

 



Swing 트리 구조 이벤트 예제


package swing;


import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;


import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JScrollPane;

import javax.swing.JTree;

import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.tree.TreePath;


//Swing 트리구조 예제

public class SwingTest5 extends JFrame {

private JLabel lab;

private JTree tree; 

private JScrollPane scroll;

public SwingTest5() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

DefaultMutableTreeNode root = new DefaultMutableTreeNode("커피");

DefaultMutableTreeNode step1 = new DefaultMutableTreeNode("자바 커피");

DefaultMutableTreeNode step2 = new DefaultMutableTreeNode("원두 커피");

DefaultMutableTreeNode step2_1 = new DefaultMutableTreeNode("아메리카노");

DefaultMutableTreeNode step2_2 = new DefaultMutableTreeNode("헤이즐넛");

DefaultMutableTreeNode step2_3 = new DefaultMutableTreeNode("카페라떼");

root.add(step1);

root.add(step2);

step2.add(step2_1);

step2.add(step2_2);

step2.add(step2_3);

tree = new JTree(root);

scroll = new JScrollPane(tree); // 스크롤 패널인스턴스에 트리 인스턴스를 넣어서 출력

lab = new JLabel("여기에 선택한 항목이 나타납니다.");

add(scroll);

add("South",lab);

tree.addMouseListener(new TreeMouseHandler());

}

class TreeMouseHandler extends MouseAdapter{ //마우스 이벤트를 사용하기 위해 어댑터 상속


@Override

public void mousePressed(MouseEvent e) {

// getRowForLocation -> 마우스로 클릭한 곳의 행번호를 알려준다.

//System.out.println(tree.getRowForLocation(e.getX(), e.getY()));

// getPathForLocation -> 마우스로 클릭한 곳에 해당하는 경로의 값를 알려준다.

//System.out.println(tree.getPathForLocation(e.getX(), e.getY()));

int row = tree.getRowForLocation(e.getX(), e.getY()); 

TreePath path = tree.getPathForLocation(e.getX(), e.getY());

if(row!=-1) { //선택되었을때만 결과가 나오게 처리

  //맨마지막에 있는 항목가져오기

lab.setText(path.getLastPathComponent().toString()); 

}

}

}


public static void main(String[] args) {

SwingTest5 test = new SwingTest5();

test.setSize(300,100);

test.setVisible(true);

}

}




실행결과↓





Swing Table 예제


package swing;


import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JScrollBar;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.TableModel;


//Swing Table 예제

public class SwingTest6 extends JFrame implements ActionListener{

private JScrollPane scroll;

private JTable table;

private JButton btnDisplay;

private String title[] = {"이름", "나이", "성별"};

private String data[][] = {{"홍길동", "20", "남자"},

   {"임꺽정", "22", "남자"},

   {"신사임당", "25", "여자"}

  };

public SwingTest6() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

table = new JTable(data, title);

scroll = new JScrollPane(table);

btnDisplay = new JButton("콘솔에 출력");

add("Center", scroll);

add("South", btnDisplay);

btnDisplay.addActionListener(this);

}

@Override

public void actionPerformed(ActionEvent arg0) {

TableModel model = table.getModel();

for(int i=0; i<model.getColumnCount();i++) {

System.out.print(model.getColumnName(i)+"\t");

}

System.out.println();

System.out.println("-----------------------------");

for(int j=0; j<model.getRowCount();j++) {

for(int k=0; k<model.getColumnCount();k++) {

System.out.print(model.getValueAt(j,k)+"\t");

}

System.out.println();

}

}




public static void main(String[] args) {

SwingTest6 test = new SwingTest6();

test.setSize(300,400);

test.setVisible(true);

}

}



실행결과↓



콘솔에 출력 버튼을 누르면 Console창에 데이터가 뜬다.



Swing Table 예제


package swing;


import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.table.DefaultTableModel;


//Swing Table 예제


public class SwingTest7 extends JFrame implements ActionListener{

private JTable table;

private JScrollPane scroll;

private String title[] = {"이름","나이","성별"};

private JButton btnAdd, btnDel;

private JPanel panel;

private JTextField tfName, tfAge, tfGender;

public SwingTest7() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

btnAdd = new JButton("추가");

btnDel = new JButton("삭제");

tfName = new JTextField("이름",6);

tfAge = new JTextField("나이",3);

tfGender = new JTextField("성별",2);

panel = new JPanel();

//따로 지정한 데이터가 없기때문에 데이터를 저장할 모델 객체를 만들어 줘야하기 때문에 인스턴스 생성

DefaultTableModel model = new DefaultTableModel(title, 0); //두번째 인자값은 데이터 개수가 0개라는 것이다.

table = new JTable(model);

scroll = new JScrollPane(table);

add("Center", scroll);

panel.add(tfName);

panel.add(tfAge);

panel.add(tfGender);

panel.add(btnAdd);

panel.add(btnDel);

add("South", panel);

btnAdd.addActionListener(this);

btnDel.addActionListener(this);

}

@Override

public void actionPerformed(ActionEvent arg0) {

if(arg0.getActionCommand().equals("추가")) {

String[] data = new String[3];

data[0] = tfName.getText();

data[1] = tfAge.getText();

data[2] = tfGender.getText();

DefaultTableModel model = (DefaultTableModel)table.getModel();

model.addRow(data); // addRow -> 데이터를 행방향으로 넣어라

}else {

int row = table.getSelectedRow();

if(row== -1) {

JOptionPane.showMessageDialog(null, "반드시 선택해야합니다.");

return;

}

DefaultTableModel model = (DefaultTableModel)table.getModel();

model.removeRow(row);

}

}





public static void main(String[] args) {

SwingTest7 test = new SwingTest7();

test.setSize(300,400);

test.setVisible(true);

}

}



실행결과↓



데이터를 추가버튼 과 삭제버튼으로 넣을수 있는 예제


'BACKEND > Java' 카테고리의 다른 글

[Java] 야구 게임  (0) 2017.11.19
[Java] Network  (0) 2017.11.08
[Java] Window Programming - <Menu>  (0) 2017.11.07
[Java] ItemEvent/TextEvent 예제  (0) 2017.11.07
[Java] Window Programing - <Event>  (0) 2017.11.06

댓글

Designed by JB FACTORY