본문 바로가기
(학) (공) (web)

04.23(48일차) - Swing 활용한 (Label, JCheckBox, JRadioButton)

by 만석이 2024. 4. 23.

버튼 클릭시 패널 색 바꾸기

package ex4_JPanel;

import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CardLayoutTest_2 extends JPanel{

	public CardLayoutTest_2() {
			//패널들을 붙힐 패널
			JPanel cards = new JPanel(new CardLayout());
			
			//패널1
			JPanel card1 = new JPanel();
			JButton nextButton = new JButton("next");
			card1.setBounds(100,100,200,200);
			card1.setBackground(Color.black);
			card1.add(nextButton);
			
			//패널2
			JPanel card2 = new JPanel();
			JButton prevButton = new JButton("prev");
			card2.setBounds(100,100,200,200);
			card2.setBackground(Color.red);
			card2.add(prevButton);
			
			//각 패널을 카드 레이아웃에 추가
			cards.add(card1,"Panel1");
			cards.add(card2,"Panel2");
			
			
			//카드 레이아웃을 가진 JPanel을 현재 패널에 추가
			add(cards);
			
			
			//카트 레이아웃 객체 가져오기
			CardLayout cl = (CardLayout)cards.getLayout();
			
			//next버튼 클릭시 다음 카드로 전환하는 이벤트 처리
			nextButton.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					cl.next(cards);	
				}
			});
			
			 // Previous 버튼 클릭 시 이전 카드로 전환하는 이벤트 처리
			prevButton.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					cl.previous(cards);
				}
			});
	
			
	}	
			
			private static void createGUI() {
				JFrame f = new JFrame();
				CardLayoutTest_2 cardDemo = new CardLayoutTest_2();
				f.setBounds(100,100,300,300);
				f.add(cardDemo);
				f.setVisible(true);
			}
			
			public static void main(String[] args) {
				createGUI();
			}
}

 


 

사방으로 버튼 만들기

package ex4_JPanel;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JPanel;

import ex2_Frame.JFrameTest;

public class JPanelTest {
	public static void main(String[] args) {
		
		
		JPanel p1 = new JPanel();
		
		//색지정
		p1.setBackground(Color.CYAN);
		p1.setLayout(new FlowLayout());
		
		
		//세로줄 3개, 가로줄 2개
		p1.setLayout(new GridLayout(3,2)); 
		
		
		//버튼 위치 바깥쪽으로 수정함
		p1.setLayout(new BorderLayout()); 
		p1.add("North",new JButton("1"));
		p1.add("West",new JButton("2"));
		p1.add("Center",new JButton("3"));
		p1.add("East",new JButton("4"));
		p1.add("South",new JButton("5"));

		

		
		JFrameTest f = new JFrameTest();
		f.add(p1);
		
		
	}
}

 

라벨에 데이터 입력

 

package ex5_text;

import java.awt.FlowLayout;

import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import ex2_Frame.JFrameTest;

public class EX1_JText {
	public static void main(String[] args) {
		JLabel lb1,lb2,lb3;
		
		lb1 = new JLabel("이름");
		lb2 = new JLabel("나이");
		lb3 = new JLabel("비밀번호");
		
		JTextField tf = new JTextField(20);
		JTextArea ta = new JTextArea(7,20);
		JPasswordField pf = new JPasswordField(20);
		
		JFrameTest f = new JFrameTest();
		f.setLayout(new FlowLayout());
		f.setBounds(400, 300, 300, 250);
		
		f.add(lb1);
		f.add(tf);
		
		f.add(lb2);
		f.add(ta);
		
		f.add(lb3);
		f.add(pf);
		
		//label에서 제공하는 메서드
		//setText(String s)
		//getTest(String s)
		
		//TextField에서 제공하는 메서드
		//setEditable(boolean b) : 수정 가능한지 불가능한지 설정
	
		
		
		
		
		
	}
}

 

 


 

라디오 버튼 클릭시 해당값 라벨에 적용

 

package ex6_item;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

import ex2_Frame.JFrameTest;

public class ItemEventTest {
	public static void main(String[] args) {
		
		//라디오버튼 객체 생성하기
		ButtonGroup buttonGroup = new ButtonGroup();
		
		JRadioButton button1 = new JRadioButton("선택1");
		JRadioButton button2 = new JRadioButton("선택2");
		JRadioButton button3 = new JRadioButton("선택3");
		
		buttonGroup.add(button1);
		buttonGroup.add(button2);
		buttonGroup.add(button3);
		
		
		//패널에 라디오 버튼 붙히기
		JPanel jPanel = new JPanel();
		JPanel jPanel2 = new JPanel();
		
		//버튼을 판넬에 붙힌다.
		jPanel.add(button1);
		jPanel.add(button2);
		jPanel.add(button3);
		

		JLabel jLabel = new JLabel("선택 항목 : ");
		JLabel jLabe2 = new JLabel();
		
		jPanel2.add(jLabel);
		jPanel2.add(jLabe2);
		
		
		//아이템의 상태가 변했을때 호출되는 메서드(기능정의)
		ItemListener itemListener = new ItemListener() {
			
			
			public void itemStateChanged(ItemEvent e) { //내가 누른 버튼의 상태를 호출한다.
				if(e.getStateChange() == ItemEvent.SELECTED) {
					if(e.getSource() == button1) {
						jLabe2.setText("선택1");
					}else if(e.getSource() == button2) {
						jLabe2.setText("선택2");
					}else if(e.getSource() == button3) {
						jLabe2.setText("선택3");
					}
				}
			}
		};
		 
		//만들어준 기능들을 버튼들에게 붙여준다.
		button1.addItemListener(itemListener);
		button2.addItemListener(itemListener);
		button3.addItemListener(itemListener);
		
		JFrameTest frameTest = new JFrameTest();
		frameTest.setLayout(new BorderLayout());
		frameTest.add(jPanel,BorderLayout.CENTER);
		frameTest.add(jPanel2,BorderLayout.SOUTH);

		
		
	}
}

 

 

 


 

버튼은 위에 라디오버튼은 밑에 적용시키기

 

 

 

package ex6_item;

import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

import ex2_Frame.JFrameTest;

public class JCheckBoxTest {

	public static void main(String[] args) {
		JCheckBox jcb1,jcb2,jcb3;
		JRadioButton jrb1,jrb2;
		
		JPanel jp1 = new JPanel();
		jcb1 = new JCheckBox("음악감상",true);
		jcb2 = new JCheckBox("등산",false);
		jcb3 = new JCheckBox("조깅",false);

		
		jp1.add(jcb1);
		jp1.add(jcb2);
		jp1.add(jcb3);
		
		
		JPanel jp2 = new JPanel();
		ButtonGroup bt = new ButtonGroup();
		jrb1 = new JRadioButton("결혼",true);
		jrb2 = new JRadioButton("이혼",false);
		
		bt.add(jrb1);
		bt.add(jrb2);
			
		jp2.add(jrb1);
		jp2.add(jrb2);
		

		
		JFrameTest f = new JFrameTest();
		f.add(jp1,"North");
		f.add(jp2,"South");
	}

}

 

 

 


콤보 박스를 사용한 예제

package ex6_item;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;

import ex2_Frame.JFrameTest;

public class JComboBoxTest {
	public static void main(String[] args) {
		//콤보박스
		
		String[] title = {"C","JAVA","Python","Kotlin"};
		
		JComboBox<String> jComboBoxTest = new JComboBox<>(title);
		jComboBoxTest.setBounds(0,0,100,30);
		JFrameTest frameTest = new JFrameTest();

		
		ActionListener actionListener = new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				String selected = (String) jComboBoxTest.getSelectedItem();
				System.out.println("선택한 언어는 : "+selected);
				
			}
			
		};
		
		
		frameTest.setLayout(null); 
		jComboBoxTest.addActionListener(actionListener);
		frameTest.add(jComboBoxTest);
		
	}
}

JmenBar 사용한 예제

package ex6_item;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import ex2_Frame.JFrameTest;

public class JMenuBarTest {
	public static void main(String[] args) {
		//JMenBar 클래스
		//메뉴바를 생성한다.
		JMenuBar jMenuBar = new JMenuBar();
		
		//JMenu 클래스
		//메뉴바에 들어갈 메뉴
		JMenu jMenu1 = new JMenu("파일");
		JMenu jMenu2 = new JMenu("편집");
		JMenu jMenu3 = new JMenu("보기");
		
		//JMenuItem 클래스
		//JMenu에 들어갈 메뉴
		JMenuItem jMenuItem1 = new JMenuItem("새로 만들기");
		JMenuItem jMenuItem2 = new JMenuItem("열기");
		JMenuItem jMenuItem3 = new JMenuItem("저장");
		
		jMenu1.add(jMenuItem1);
		jMenu1.add(jMenuItem2);
		jMenu1.add(jMenuItem3);
		
		JMenuItem jMenuItem4 = new JMenuItem("잘라내기");
		JMenuItem jMenuItem5 = new JMenuItem("복사");
		JMenuItem jMenuItem6 = new JMenuItem("붙혀넣기");
		
		jMenu2.add(jMenuItem4);
		jMenu2.add(jMenuItem5);
		jMenu2.add(jMenuItem6);
		
		JMenuItem jMenuItem7 = new JMenuItem("잘라내기");
		JMenuItem jMenuItem8 = new JMenuItem("복사");
		JMenuItem jMenuItem9 = new JMenuItem("붙혀넣기");
		
		jMenu3.add(jMenuItem7);
		jMenu3.add(jMenuItem8);
		jMenu3.add(jMenuItem9);
		
		
		
		jMenuBar.add(jMenu1); 
		jMenuBar.add(jMenu2); 
		jMenuBar.add(jMenu3);
		
		JFrameTest frameTest = new JFrameTest();
		frameTest.setJMenuBar(jMenuBar);
		
		
		
	}
}

JScrollPaneTest 를 사용한 예제

package ex6_item;

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;

import ex2_Frame.JFrameTest;

public class JScrollPaneTest {
	public static void main(String[] args) {
		//JScrollPane 클래스
		//필요에 따라 패널에 수평이나 수직 스크롤바를 설정한다.
		
		
		JPanel jPanel = new JPanel();
		jPanel.setLayout(new GridLayout(10,5));
		
		int cnt = 1;
		for(int i = 0; i<=10; i++) {
			for(int j = 0; j<=5; j++) {
				jPanel.add(new JButton("버튼"+cnt++));
			}
		}
		
		//수직, 수평 스크롤바를 설정하기 위한 상수
		int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS; // 세로
		int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS; //가로
		
		JScrollPane jScrollPane = new JScrollPane(jPanel,v,h);
		
		JFrameTest frameTest = new JFrameTest();
		frameTest.add(jScrollPane);
		
	}
}

JTable을 사용한 예제

package ex6_item;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;

import ex2_Frame.JFrameTest;

public class JTableTest {
	public static void main(String[] args) {
		//JTable
		//데이터를 테이블 형태인 행과 열로 나타내고자 할 때 사용한다.
		
		String[] title = {"사번","사과","부서"};
		
		String[][]data = {{"1","홍길동","총무부"},
						 {"2","제임스","전산부"},
						 {"3","존슨","인사과"}};
		
		JTable table = new JTable(data,title);
		int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS; // 세로
		int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS; //가로	
		JScrollPane jScrollPane = new JScrollPane(table,v,h);
		
		JFrameTest frameTest = new JFrameTest();
		frameTest.add(jScrollPane);
	}
}

어댑터

 

 

 

 


이미지불러오기 예제

package ex8_image;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

import ex2_Frame.JFrameTest;

public class ImageTest {
	public static void main(String[] args) {
		ImageIcon back = new ImageIcon("src/img/cat.jpg");
		JLabel jLabel = new JLabel(back);
		jLabel.setBounds(0,0,100,100);
	
		JFrameTest frameTest = new JFrameTest();
		frameTest.setLayout(null);
		frameTest.add(jLabel);
	}
}