[Java] Swing
- BACKEND/Java
- 2017. 11. 7. 15:46
● 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 |