버튼 클릭시 패널 색 바꾸기
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);
}
}
'(학) (공) (web)' 카테고리의 다른 글
04.22(47일차) - SWING을 사용한 GUI활용 (0) | 2024.04.22 |
---|---|
04.22(47일차) (1) | 2024.04.22 |
04.19(46일차) - Enum, 어노테이션, 자바 Stream (0) | 2024.04.19 |
04.18(45일차) - File클래스, 입출력 스트림, 보조스트림 (0) | 2024.04.18 |
04.17(44일차) (0) | 2024.04.17 |