



package day0220;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
@SuppressWarnings("serial")
public class MainWindow extends JFrame {
private JMenuItem jmiSubwin;
private JMenuItem jmiClose;
public MainWindow() {
super("다이얼로그 연습");
JMenuBar jmb=new JMenuBar();
JMenu jmDialog=new JMenu("다이얼로그");
jmiSubwin=new JMenuItem("다이얼로그 열기");
jmiClose=new JMenuItem("닫기");
//메뉴아이템을 메뉴에 배치
jmDialog.add(jmiSubwin);
jmDialog.addSeparator();
jmDialog.add(jmiClose);
//메뉴 메뉴바 배치
jmb.add(jmDialog);
//메뉴바를 Frame 배치
setJMenuBar(jmb);
//이벤트 등록
MainWindowEvt mwe=new MainWindowEvt(this);
addWindowListener(mwe);//윈도우 이벤트 등록
jmiSubwin.addActionListener(mwe);//액션 이벤트 등록
jmiClose.addActionListener(mwe);//액션 이벤트 등록
setBounds(10,10,1200,1000);
setVisible(true);
}//MainWindow
public JMenuItem getJmiSubwin() {
return jmiSubwin;
}
public JMenuItem getJmiClose() {
return jmiClose;
}
}//class
package day0220;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* MainWindow의 이벤트를 처리하기위한 has a 관계의 클래스
*/
public class MainWindowEvt extends WindowAdapter implements ActionListener {
private MainWindow mw;
public MainWindowEvt(MainWindow mw) {
this.mw=mw;
}//MainWindowEvt
private void windowClosing() {
//윈도우를 종료하기전에 처리해야할 코드
mw.dispose();
}//windowClosing
@Override
public void windowClosing(WindowEvent we) {
windowClosing();
}//windowClosing
@Override
public void actionPerformed(ActionEvent ae) {
if (ae.getSource()==mw.getJmiSubwin()) {//다이얼로그 실행
new SubWin(mw); //다이얼로그 실행.
}//end if
if (ae.getSource()==mw.getJmiClose()) {//윈도우 종료
windowClosing();
}//end if
}//actionPerformed
}//class
package day0220;
/**
* 메인 윈도우를 실행하기 위한 전저치리용 클래스
*/
public class RunMainWindow {
public static void main(String[] args) {
new MainWindow();
}//main
}//class


package day0218;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
/**
* MVC Pattern 이 도입된 컴포넌트 사용.
* Model : 데이터
* Viewer : 화면
* Controller : 이벤트
*/
@SuppressWarnings("serial")
public class UseComboBox extends JFrame implements ActionListener {
private DefaultComboBoxModel<String> dcbm;
private JComboBox<String> jcbDomain;
public UseComboBox() {
super("JComboBox 사용");
//1.데이터를 가지는 Model 단의 클래스를 개체화
dcbm=new DefaultComboBoxModel<String>();
//2.데이터를 사용하여 화면을 만드는 View 단 클래스를 객체화. (has a)
jcbDomain=new JComboBox<String>(dcbm);
jcbDomain.addActionListener(this);
//도메인을 추가 (데이터) => 사용
dcbm.addElement("gmail.com");
dcbm.addElement("naver.com");
dcbm.addElement("daum.net");
dcbm.addElement("hotmail.com");
dcbm.addElement("hatmail.net");
JPanel jp=new JPanel();
jp.setBorder(new TitledBorder("이메일 입력"));
jp.add(new JTextField(15));
jp.add(new JLabel("@",JLabel.CENTER));
jp.add(jcbDomain);
add("South",jp);
setBounds(100, 100, 400, 200);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}//UseComboBox
public static void main(String[] args) {
new UseComboBox();
}//main
@Override
public void actionPerformed(ActionEvent e) {
int selectedIndex=jcbDomain.getSelectedIndex();//View 에서 선택한 인덱스를 얻고
System.out.println("선택한 인덱스"+selectedIndex);
//Model 에서 선택한 인덱스에 해당하는 값 얻기
System.out.println("값 얻기 "+dcbm.getElementAt(selectedIndex));
//선택한 아이템 삭제
// dcbm.removeElement(selectedIndex);
}//actionPerformed
}//class
컴파일 결과&콘솔 출력

package day0218;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
@SuppressWarnings("serial")
public class UseJList extends JFrame {
public UseJList() {
super("JList 사용");
//1. 모델 생성
DefaultListModel<String> dlm=new DefaultListModel<String>();
//2.모델과 has a 관계로 view 를 생성
JList<String> jl=new JList<String>(dlm);
//JList 는 스크롤바 없엉
JScrollPane jsp=new JScrollPane(jl);
//데이터 추가 : 모델
dlm.addElement("Java Se");
dlm.addElement("Oracle DBMS");
dlm.addElement("JDBC");
dlm.addElement("HTML5");
dlm.addElement("CSS6");
dlm.addElement("JavaScript(ECMAScript)");
dlm.addElement("Java EE");
add("North",new JLabel("학습 과목들"));
add("Center",jsp);
setBounds(100,100,300,600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}//UseJList
public static void main(String[] args) {
new UseJList();
}
}
컴파일 결과

package day0218;
import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class UseIcon extends JFrame {
public UseIcon() {
super("이미지 연습");
//ImageIcon 새성
ImageIcon ii=new ImageIcon("C:/dev/workspace/java_se/src/day0218/images/img1.png");
ImageIcon ii2=new ImageIcon("C:/dev/workspace/java_se/src/day0218/images/img2.png");
ImageIcon ii3=new ImageIcon("C:/dev/workspace/java_se/src/day0218/images/img3.png");
ImageIcon ii4=new ImageIcon("C:/dev/workspace/java_se/src/day0218/images/img4.png");
//Component 와 has a 설정
JButton jbtn=new JButton("우는차차",ii);
JButton jbtn2=new JButton("웃는차차",ii2);
JButton jbtn3=new JButton("보고있는 차차",ii3);
//풍선 도움말 설정
jbtn.setToolTipText("울고 있는 차차!");
jbtn2.setToolTipText("읏고 있는 차차!");
jbtn3.setToolTipText("응시하고 있는 차차!");
//버튼 라벨 이동
//수직
jbtn.setVerticalTextPosition(JButton.CENTER);//TOP,CENTER,BOTTOM
jbtn3.setVerticalTextPosition(JButton.BOTTOM);//TOP,CENTER,BOTTOM
//수평
jbtn2.setHorizontalTextPosition(JButton.LEFT);
jbtn3.setHorizontalTextPosition(JButton.CENTER);
//RollOver
jbtn3.setRolloverIcon(ii4); // 3번째 사진을 클릭하면 4번째 이미지로 바뀜
setLayout(new GridLayout(1,3));
add(jbtn);
add(jbtn2);
add(jbtn3);
setBounds(200,200,1200,500);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}//UseIcon
public static void main(String[] args) {
new UseIcon();
}//main
}//class
컴파일 결과
> C:/dev/workspace/java_se/src/day0218/images 경로에 img1.png~img4.img가 있다면 해당 이미지가 표시

package day0218;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
@SuppressWarnings("serial")
public class UseJTable extends JFrame {
public UseJTable() {
super("JTable 사용");
String[] columnNames= {"번호","이름","주소","비고"};
String[][] rowDate= {{"1","루피","서울시 강남구 역삼동","고무고무"}
,{"2","탄지로","서울시 동대문구 동대문동","귀살대"}
,{"3","이치로","경기도 의왕시","사신"}};
//1.Model 생성
DefaultTableModel dtm=new DefaultTableModel(rowDate,columnNames);
//2.Model view has a 관계 생성
JTable jt=new JTable(dtm); //스크롤 바가 없음.=> 컬럼명이 보이지 않는다.
JScrollPane jsp=new JScrollPane(jt);
//3. Model 에 데이터 추가
String[] data= {"4","젠이츠","경기도 수원시 영토구 망포동포동","귀살대"};
dtm.addRow(data);
dtm.addRow(new String[]{"5","무잔","서울시 중구","두목님"});
add("Center",jsp);
setBounds(100,50,600,400);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}//UseJTable
public static void main(String[] args) {
new UseJTable();
}//main
}//class
컴파일 결과

'Java' 카테고리의 다른 글
| [Java] 파일기록&복사 - FileOutputStream&Writer,JFileChooser (0) | 2025.04.02 |
|---|---|
| [Java] 예외 처리 Exception (0) | 2025.03.30 |
| [Java] Layout - Grid,Flow,Multi (0) | 2025.03.20 |
| [Java] ArrayList,Scanner (0) | 2025.03.19 |
| [Java] StringBuilder 등 유용한 클래스들 import하기 (0) | 2025.03.17 |