public class SwingCheckEx04 extends JFrame implements ActionListener,ItemListener{
Container cp;
JCheckBox[] cbHobby=new JCheckBox[4];
JCheckBox cbDriver,cbBold;
JButton btnHobby;
JLabel lblResult;
public SwingCheckEx04(String title) {
super(title);
cp=this.getContentPane();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(700,100,400,400);
cp.setBackground(new Color(151,190,200));
initDesign();
this.setVisible(true);
}
//디자인
public void initDesign() {
this.setLayout(null);
//운전면허
cbDriver=new JCheckBox("운전면허");
cbDriver.setBounds(20, 20, 100, 30);
cbDriver.setOpaque(false); //불투명 없애기
this.add(cbDriver);
cbDriver.addItemListener(this); //운전면허의 이벤트 추가
//굵게
cbBold=new JCheckBox("라벨 굵게");
cbBold.setBounds(20, 60, 150, 30);
cbBold.setOpaque(false);
this.add(cbBold);
cbBold.addItemListener(this); //라벨 굵게의 이벤트 추가
//결과라벨
lblResult=new JLabel("Have a Nice Day",JLabel.CENTER);
lblResult.setBounds(20, 280, 330, 60);
lblResult.setBorder(new LineBorder(Color.GRAY,3)); //색깔과 굵기 지정
this.add(lblResult);
//취미 체크박스
String []hobby= {"서핑","운동","영화","여행"};
int xpos=20; //xpos의 초기값
for(int i=0;i<cbHobby.length;i++)
{
cbHobby[i]=new JCheckBox(hobby[i]); //생성해주기
cbHobby[i].setBounds(xpos, 100, 80, 30);
cbHobby[i].setOpaque(false);
this.add(cbHobby[i]);
xpos+=80;
}
//버튼
btnHobby=new JButton("당신의 취미는");
btnHobby.setBounds(80, 150, 200, 30);
this.add(btnHobby);
//버튼의 이벤트 추가
btnHobby.addActionListener(this);
}
public static void main(String[] args) {
new SwingCheckEx04("체크박스출력연습");
}
//아이템리스너:주로 체크박스 선택했을 때 바로 되는 것
@Override
public void itemStateChanged(ItemEvent e) {
Object ob=e.getSource();
if(ob==cbDriver)
{
String s="체크상태: "+cbDriver.isSelected()+", 텍스트: "+cbDriver.getText();
lblResult.setText(s);
}
//폰트 굵게 bold
else if(ob==cbBold)
{
if(cbBold.isSelected())
lblResult.setFont(new Font("",Font.BOLD,20)); //""은 기본을 의미
else
lblResult.setFont(new Font("",Font.PLAIN,12));
}
}
//다중체크 선택하고 버튼클릭이벤트
@Override
public void actionPerformed(ActionEvent e) {
Object ob=e.getSource();
if(ob==btnHobby) //익명내부클래스로 해도 됨(객체가 명확할 때)
{
int select=0;
String s="저의 취미는 ";
// for(int i=0;i<cbHobby.length;i++)
// {
// if(cbHobby[i].isSelected()==true)
// {
// select++;
// s+="["+cbHobby[i].getText()+"]"; //cbHobby에서 가지고 온 값
// }
// }
//for문 대신 for~each도 가능
for(JCheckBox cb:cbHobby)
{
if(cb.isSelected())
{
select++;
s+="["+cb.getText()+"]";
}
}
if(select==0)
s="저는 취미가 없습니다";
else
s+="입니다";
//라벨출력
lblResult.setText(s);
}
}
}
'Swing' 카테고리의 다른 글
210826_JLabel+JTable+JTextArea (0) | 2021.08.26 |
---|---|
210826_JTable+JLabel+JButton+DefaultTableModel (0) | 2021.08.26 |
210824_Swing+label+Icon+Date (0) | 2021.08.24 |
210824_Swing+Label+Button+Arrays+Random (0) | 2021.08.24 |
210824_Swing+radiobutton+arrays+actionlistener (0) | 2021.08.24 |