[Java]Dialog,JOptionPane,actionFerformed,UseCombobox&List&Icon&Table

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

컴파일 결과