본문 바로가기
Programming/JDBC

Swing(4) JComponent

by yoon9i 2024. 4. 9.

* JCheckBox

package app2;

import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.HashSet;
import java.util.Set;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class JComponent02_JCheckBox extends JFrame implements ItemListener {

	private JPanel contentPane;
	JCheckBox ch1;
	JCheckBox ch2;
	JCheckBox ch3;
	JLabel lblResult;
	
	Set<String> set;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					JComponent02_JCheckBox frame = new JComponent02_JCheckBox();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public JComponent02_JCheckBox() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		ch1 = new JCheckBox("야구");
		ch1.setBounds(27, 30, 107, 23);
		contentPane.add(ch1);
		
		ch2 = new JCheckBox("축구");
		ch2.setBounds(27, 98, 107, 23);
		contentPane.add(ch2);
		
		ch3 = new JCheckBox("농구");
		ch3.setBounds(27, 167, 107, 23);
		contentPane.add(ch3);
		
		lblResult = new JLabel("Result");
		lblResult.setBounds(27, 217, 234, 15);
		contentPane.add(lblResult);
		
		// 이벤트 설정
		ch1.addItemListener(this);
		ch2.addItemListener(this);
		ch3.addItemListener(this);
		
		set = new HashSet<>();
	}

	@Override
	public void itemStateChanged(ItemEvent e) {
		// TODO Auto-generated method stub
		JCheckBox xxx = (JCheckBox)e.getSource();
		System.out.println(xxx.getActionCommand()+"\t"+e.getStateChange());
		String key = xxx.getActionCommand();
		
		if(e.getStateChange() == ItemEvent.SELECTED) {
			set.add(key);
		} else {
			set.remove(key);
		}
		
		lblResult.setText(set.toString());
	}
}

 

* JRadioButton

package app2;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.EmptyBorder;

public class JComponent03_JRadioButton extends JFrame implements ActionListener {

	private JPanel contentPane;
	private final ButtonGroup buttonGroup = new ButtonGroup();
	
	JRadioButton r1;
	JRadioButton r2;
	JRadioButton r3;
	JLabel lblResult;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					JComponent03_JRadioButton frame = new JComponent03_JRadioButton();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public JComponent03_JRadioButton() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 360, 302);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		r1 = new JRadioButton("야구");
		buttonGroup.add(r1);
		r1.setBounds(18, 44, 113, 23);
		contentPane.add(r1);
		
		r2 = new JRadioButton("축구");
		buttonGroup.add(r2);
		r2.setBounds(18, 106, 113, 23);
		contentPane.add(r2);
		
		r3 = new JRadioButton("농구");
		buttonGroup.add(r3);
		r3.setBounds(18, 167, 113, 23);
		contentPane.add(r3);
		
		lblResult = new JLabel("Result");
		lblResult.setBounds(18, 223, 212, 15);
		contentPane.add(lblResult);
		
		// 이벤트 설정
		r1.addActionListener(this);
		r2.addActionListener(this);
		r3.addActionListener(this);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		String key = e.getActionCommand();
		JRadioButton xxx = (JRadioButton)e.getSource();
		
//		System.out.println(key);
		System.out.println(xxx.getText());
		
//		lblResult.setText(key);
		lblResult.setText(xxx.getText());
	}
}

 

* JTextField

package app2;

import java.awt.EventQueue;
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.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

public class JComponent04_JTextField extends JFrame {

	private JPanel contentPane;
	private JTextField tfDeptno;
	private JTextField tfDname;
	private JTextField tfLoc;
	
	JButton btnSave;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					JComponent04_JTextField frame = new JComponent04_JTextField();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public JComponent04_JTextField() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 768, 461);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("부서번호");
		lblNewLabel.setBounds(12, 94, 50, 15);
		contentPane.add(lblNewLabel);
		
		tfDeptno = new JTextField();
		tfDeptno.setBounds(74, 91, 199, 21);
		contentPane.add(tfDeptno);
		tfDeptno.setColumns(10);
		
		JLabel lblNewLabel_1 = new JLabel("부서명");
		lblNewLabel_1.setBounds(12, 122, 50, 15);
		contentPane.add(lblNewLabel_1);
		
		tfDname = new JTextField();
		tfDname.setColumns(10);
		tfDname.setBounds(74, 119, 199, 21);
		contentPane.add(tfDname);
		
		JLabel lblNewLabel_2 = new JLabel("부서위치");
		lblNewLabel_2.setBounds(12, 150, 50, 15);
		contentPane.add(lblNewLabel_2);
		
		tfLoc = new JTextField();
		tfLoc.setColumns(10);
		tfLoc.setBounds(74, 147, 199, 21);
		contentPane.add(tfLoc);
		
		btnSave = new JButton("저장");
		btnSave.setBounds(12, 208, 91, 23);
		contentPane.add(btnSave);
		
		// button 이벤트처리
		btnSave.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String deptno = tfDeptno.getText();
				String dname = tfDname.getText();
				String loc = tfLoc.getText();
				
				System.out.println(deptno+"\t"+dname+"\t"+loc);
			}
		});// end button 이벤트처리
	}
}

 

* JList

package app2;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class JComponent05_JList extends JFrame {

	private JPanel contentPane;
	JList jList;
	
	// JList 에서 보여줄 데이터(모델)를 관리하는 클래스
	// java.util.Vector 상속받는 모델 클래스
	DefaultListModel<String> listModel;
	private JButton btnNewButton;
	private JButton btnNewButton_1;
	private JTextField textField;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					JComponent05_JList frame = new JComponent05_JList();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public JComponent05_JList() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 768, 461);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		jList = new JList();
		jList.setBounds(32, 36, 172, 198);
//		contentPane.add(jList);
		
		// Model 생성
		listModel = new DefaultListModel<>();
		listModel.addElement("홍길동1");
		listModel.addElement("홍길동2");
		listModel.addElement("홍길동3");
		listModel.addElement("홍길동4");
		listModel.addElement("홍길동5");
		
		
		jList.setModel(listModel);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(233, 36, 172, 198);
		contentPane.add(scrollPane);
		
		// JScrollPane 에 JList 추가
		scrollPane.setViewportView(jList);
		
		btnNewButton = new JButton("저장");
		btnNewButton.setBounds(50, 64, 91, 23);
		contentPane.add(btnNewButton);
		
		btnNewButton_1 = new JButton("삭제");
		btnNewButton_1.setBounds(50, 122, 91, 23);
		contentPane.add(btnNewButton_1);
		
		textField = new JTextField();
		textField.setBounds(45, 192, 154, 21);
		contentPane.add(textField);
		textField.setColumns(10);
		
		// 저장
		btnNewButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String name = textField.getText();
				listModel.addElement(name);
			}
		});
		
		// 삭제
		btnNewButton_1.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String name = textField.getText();
				if(listModel.contains(name)) {
					listModel.removeElement(name);
				}
			}
		});
		
		
		
		
		// 이벤트 처리
		jList.addListSelectionListener(new ListSelectionListener() {
			
			@Override
			public void valueChanged(ListSelectionEvent e) {
				// TODO Auto-generated method stub
				JList<String> jList = (JList)e.getSource();
				System.out.println(jList.getSelectedIndex()+"\t"+jList.getSelectedValue());
			}
		});
	}
}

 

* JTable

package app2;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

public class JComponent06_JTable extends JFrame {

	private JPanel contentPane;
	private JTable table;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					JComponent06_JTable frame = new JComponent06_JTable();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public JComponent06_JTable() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(37, 52, 134, 164);
		contentPane.add(scrollPane);
		
		table = new JTable();
		scrollPane.setViewportView(table);
		
		// 데이터 추가
//		Vector<String> v = new Vector<>();
		
		String[] header = {"deptno", "danme", "loc"};
		String[][] obj = {{"10","개발1","서울1"}, {"20","개발2","서울2"}, {"30","개발3","서울3"}};
		
		DefaultTableModel dm = new DefaultTableModel(obj, header);
		table.setModel(dm);
	}

}

 

* JTable_event

package app2;

import java.awt.EventQueue;
import java.util.Arrays;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

public class JComponent06_JTable2_event extends JFrame {

	private JPanel contentPane;
	private JTable table;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					JComponent06_JTable2_event frame = new JComponent06_JTable2_event();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public JComponent06_JTable2_event() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(37, 52, 134, 164);
		contentPane.add(scrollPane);
		
		table = new JTable();
		scrollPane.setViewportView(table);
		
		// 데이터 추가
//		Vector<String> v = new Vector<>();
		
		String[] header = {"deptno", "danme", "loc"};
		String[][] obj = {{"10","개발1","서울1"}, {"20","개발2","서울2"}, {"30","개발3","서울3"}};
		
		DefaultTableModel dm = new DefaultTableModel(obj, header);
		table.setModel(dm);
		
		// 이벤트 처리
		ListSelectionModel model = table.getSelectionModel();
		model.addListSelectionListener(new ListSelectionListener() {
			
			@Override
			public void valueChanged(ListSelectionEvent e) {
				// TODO Auto-generated method stub
				ListSelectionModel lsm = (ListSelectionModel)e.getSource();
				int selectedIndex = lsm.getMinSelectionIndex();
				String [] v = obj[selectedIndex];
				System.out.println(v[0] + "\t" + v[1] + "\t" + v[2]);
				System.out.println(Arrays.toString(v));
			}
		});
	}

}

'Programming > JDBC' 카테고리의 다른 글

Swing(3) 이벤트처리 및 JDBC 연동  (0) 2024.04.09
Swing(2) 레이아웃  (0) 2024.04.09
Swing(1) 기본설명 및 프로젝트 생성  (0) 2024.04.09
MyBatis(4) 아키텍쳐  (0) 2024.04.05
MyBatis(3) 동적sql 처리  (0) 2024.04.05