2011. 7. 17. 12:10
자바 스윙(Java Swing) 컴포넌트의 ItemChange 이벤트 처리하기
2011. 7. 17. 12:10 in JavaAndroid
보통은 버튼에 addActionListener() 이벤트 핸들러들 달고, 그것을 actionPerformed() 메써드로 이벤트
처리를 하는게 일반적이다. 그 외 라디오버튼이나 체크박스 등의 컴포넌트의 특정 항목의 변화를 감지해 처리하는 ItemEvent
클래스에서 ItemStateChange() 메써드로 이벤트를 처리하려면 addItemListener() 핸들러를 붙여야 한다.
import java.awt.* ;
import javax.swing.* ;
import java.awt.event.* ;
public class ItemChangeEvent3 extends JFrame implements ItemListener {
JPanel mainPanel ;
JTextArea textArea = null ;
JScrollPane scrollPane = null ;
JPanel panelGender, panelMemberGrade, panelHobbies ;
JLabel labelGender, labelMemberGrade, labelHobbies ;
JRadioButton rbMale, rbFemale, rbPremiumMember, rbNormalMember ;
JCheckBox cbClimbing, cbWindSurfing, cbFishing, cbReading ;
public ItemChangeEvent3() {
mainPanel = new JPanel() ;
panelGender = new JPanel() ;
panelMemberGrade = new JPanel() ;
panelHobbies = new JPanel() ;
// 성별 구분 라디오버튼과 이벤트 핸들러 추가
labelGender = new JLabel("성별 구분 : ") ;
rbMale = new JRadioButton( "남 자", true ) ;
rbFemale = new JRadioButton( "여 자", false ) ;
ButtonGroup btnGroupGender = new ButtonGroup() ;
btnGroupGender.add( rbMale ) ;
btnGroupGender.add( rbFemale ) ;
panelGender.add( labelGender ) ;
panelGender.add( rbMale ) ;
panelGender.add( rbFemale ) ;
rbMale.addItemListener( this ) ;
rbFemale.addItemListener( this ) ;
// 회원 구분 라디오버튼과 이벤트 핸들러 추가
labelMemberGrade = new JLabel("회원 구분 : ") ;
rbPremiumMember = new JRadioButton( "우수 회원", true ) ;
rbNormalMember = new JRadioButton( "일반 회원", false ) ;
ButtonGroup btnGroupMemberGrade = new ButtonGroup() ;
btnGroupMemberGrade.add( rbPremiumMember ) ;
btnGroupMemberGrade.add( rbNormalMember ) ;
panelMemberGrade.add( labelMemberGrade ) ;
panelMemberGrade.add( rbPremiumMember ) ;
panelMemberGrade.add( rbNormalMember ) ;
rbPremiumMember.addItemListener( this ) ;
rbNormalMember.addItemListener( this ) ;
// 취미 선택 체크박스와 이벤트 핸들러 추가
labelHobbies = new JLabel("취미 선택 : ") ;
cbClimbing = new JCheckBox("등 산") ;
cbWindSurfing = new JCheckBox("윈드 서~핑") ;
cbFishing = new JCheckBox("낚 시") ;
cbReading = new JCheckBox("독 서") ;
panelHobbies.add( labelHobbies ) ;
panelHobbies.add( cbClimbing ) ;
panelHobbies.add( cbWindSurfing ) ;
panelHobbies.add( cbFishing ) ;
panelHobbies.add( cbReading ) ;
cbClimbing.addItemListener( this ) ;
cbWindSurfing.addItemListener( this ) ;
cbFishing.addItemListener( this ) ;
cbReading.addItemListener( this ) ;
mainPanel.setLayout(new BorderLayout()) ;
mainPanel.add( panelGender, BorderLayout.NORTH ) ;
mainPanel.add( panelMemberGrade, BorderLayout.CENTER ) ;
mainPanel.add( panelHobbies, BorderLayout.SOUTH ) ;
add( mainPanel, BorderLayout.NORTH ) ;
scrollPane = new JScrollPane( textArea = new JTextArea() ) ;
add( scrollPane, BorderLayout.CENTER ) ;
setBounds( 200, 200, 600, 450 ) ;
setVisible( true ) ;
setDefaultCloseOperation( EXIT_ON_CLOSE ) ;
} // constructor
public static void main(String[] args) {
new ItemChangeEvent3() ;
}
// ItemChange 이벤트 처리 메써드
public void itemStateChanged( ItemEvent e ) {
String item = ( ( AbstractButton )e.getItem() ).getText() ;
if ( e.getStateChange() == ItemEvent.SELECTED ) {
textArea.append( item + " 선택\n" ) ;
}
else {
textArea.append( item + " 선택 해제\n" ) ;
}
} // itemStateChanged()
} // class
import javax.swing.* ;
import java.awt.event.* ;
public class ItemChangeEvent3 extends JFrame implements ItemListener {
JPanel mainPanel ;
JTextArea textArea = null ;
JScrollPane scrollPane = null ;
JPanel panelGender, panelMemberGrade, panelHobbies ;
JLabel labelGender, labelMemberGrade, labelHobbies ;
JRadioButton rbMale, rbFemale, rbPremiumMember, rbNormalMember ;
JCheckBox cbClimbing, cbWindSurfing, cbFishing, cbReading ;
public ItemChangeEvent3() {
mainPanel = new JPanel() ;
panelGender = new JPanel() ;
panelMemberGrade = new JPanel() ;
panelHobbies = new JPanel() ;
// 성별 구분 라디오버튼과 이벤트 핸들러 추가
labelGender = new JLabel("성별 구분 : ") ;
rbMale = new JRadioButton( "남 자", true ) ;
rbFemale = new JRadioButton( "여 자", false ) ;
ButtonGroup btnGroupGender = new ButtonGroup() ;
btnGroupGender.add( rbMale ) ;
btnGroupGender.add( rbFemale ) ;
panelGender.add( labelGender ) ;
panelGender.add( rbMale ) ;
panelGender.add( rbFemale ) ;
rbMale.addItemListener( this ) ;
rbFemale.addItemListener( this ) ;
// 회원 구분 라디오버튼과 이벤트 핸들러 추가
labelMemberGrade = new JLabel("회원 구분 : ") ;
rbPremiumMember = new JRadioButton( "우수 회원", true ) ;
rbNormalMember = new JRadioButton( "일반 회원", false ) ;
ButtonGroup btnGroupMemberGrade = new ButtonGroup() ;
btnGroupMemberGrade.add( rbPremiumMember ) ;
btnGroupMemberGrade.add( rbNormalMember ) ;
panelMemberGrade.add( labelMemberGrade ) ;
panelMemberGrade.add( rbPremiumMember ) ;
panelMemberGrade.add( rbNormalMember ) ;
rbPremiumMember.addItemListener( this ) ;
rbNormalMember.addItemListener( this ) ;
// 취미 선택 체크박스와 이벤트 핸들러 추가
labelHobbies = new JLabel("취미 선택 : ") ;
cbClimbing = new JCheckBox("등 산") ;
cbWindSurfing = new JCheckBox("윈드 서~핑") ;
cbFishing = new JCheckBox("낚 시") ;
cbReading = new JCheckBox("독 서") ;
panelHobbies.add( labelHobbies ) ;
panelHobbies.add( cbClimbing ) ;
panelHobbies.add( cbWindSurfing ) ;
panelHobbies.add( cbFishing ) ;
panelHobbies.add( cbReading ) ;
cbClimbing.addItemListener( this ) ;
cbWindSurfing.addItemListener( this ) ;
cbFishing.addItemListener( this ) ;
cbReading.addItemListener( this ) ;
mainPanel.setLayout(new BorderLayout()) ;
mainPanel.add( panelGender, BorderLayout.NORTH ) ;
mainPanel.add( panelMemberGrade, BorderLayout.CENTER ) ;
mainPanel.add( panelHobbies, BorderLayout.SOUTH ) ;
add( mainPanel, BorderLayout.NORTH ) ;
scrollPane = new JScrollPane( textArea = new JTextArea() ) ;
add( scrollPane, BorderLayout.CENTER ) ;
setBounds( 200, 200, 600, 450 ) ;
setVisible( true ) ;
setDefaultCloseOperation( EXIT_ON_CLOSE ) ;
} // constructor
public static void main(String[] args) {
new ItemChangeEvent3() ;
}
// ItemChange 이벤트 처리 메써드
public void itemStateChanged( ItemEvent e ) {
String item = ( ( AbstractButton )e.getItem() ).getText() ;
if ( e.getStateChange() == ItemEvent.SELECTED ) {
textArea.append( item + " 선택\n" ) ;
}
else {
textArea.append( item + " 선택 해제\n" ) ;
}
} // itemStateChanged()
} // class
'JavaAndroid' 카테고리의 다른 글
프로그램 개발 방법론 (0) | 2011.07.25 |
---|---|
자바 쓰레드(Thread) + 그래픽으로 흐르는 문자열 만들기 (2) | 2011.07.19 |
상속과 인터페이스를 통한 `자바 쓰레드(Java Thread)` 사용 (0) | 2011.07.19 |
SQLDeveloper에서 오라클(Oracle) DB Export 백업과 복원하기 (0) | 2011.07.18 |
자바 스윙(Java Swing) 라디오버튼, 체크박스, 콤보박스 컴포넌트 이벤트 처리하기 (0) | 2011.07.14 |
오라클에서 SQL의 주요함수와 그룹함수들 사용하기 (0) | 2011.07.14 |
자바 스윙(Java Swing)을 활용한 간단한 계산기 (0) | 2011.07.13 |
자바 스윙(Java Swing)과 이벤트 핸들러를 사용한 화씨 온도 섭씨로 환산하기 (0) | 2011.07.13 |