JTree 예제

응용 SoftWare/JAVA 2016. 12. 21. 16:29

import java.util.StringTokenizer;


import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTree;

import javax.swing.event.TreeExpansionEvent;

import javax.swing.event.TreeExpansionListener;

import javax.swing.event.TreeSelectionEvent;

import javax.swing.event.TreeSelectionListener;

import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.tree.TreePath;


public class JTreeTest extends JFrame implements TreeExpansionListener, TreeSelectionListener{

JTree tree;

DefaultMutableTreeNode node, languageNode, webNode, htmlNode, frameworkNode;

JLabel lbl = new JLabel();

public JTreeTest() {

node = new DefaultMutableTreeNode("Root");

languageNode = new DefaultMutableTreeNode("language");

node.add(languageNode);

languageNode.add(new DefaultMutableTreeNode("Java"));

languageNode.add(new DefaultMutableTreeNode("Asp"));

languageNode.add(new DefaultMutableTreeNode("Jsp"));

webNode = new DefaultMutableTreeNode("web");

node.add(webNode);

htmlNode = new DefaultMutableTreeNode("html");

webNode.add(htmlNode);

htmlNode.add(new DefaultMutableTreeNode("웹표준"));

webNode.add(new DefaultMutableTreeNode("css3"));

frameworkNode = new DefaultMutableTreeNode("framework");

node.add(frameworkNode);

frameworkNode.add(new DefaultMutableTreeNode("spring"));

frameworkNode.add(new DefaultMutableTreeNode("mybatis"));

tree = new JTree(node);

add(tree, "Center");

add(lbl, "South");

setSize(400, 500);

setVisible(true);

//폴더 확장

tree.expandRow(3); //root의 하위 폴더의 번호 - 폴더 확장

tree.addTreeExpansionListener(this);

tree.addTreeSelectionListener(this);

}

//오버라이딩

public void treeExpanded(TreeExpansionEvent tee){

System.out.println("treeEx");

}

public void treeCollapsed(TreeExpansionEvent tee){

System.out.println("treeCol");

}

public void valueChanged(TreeSelectionEvent tse){

TreePath tp = tree.getSelectionPath(); //경로 구하기

StringTokenizer st = new StringTokenizer(tp.toString(), "[,]");

String pathStr = "";

while(st.hasMoreTokens()){

pathStr += st.nextToken().trim() + "/";

}

lbl.setText(pathStr);

}

public static void main(String[] args) {

new JTreeTest();


}


}



'응용 SoftWare > JAVA' 카테고리의 다른 글

JSplitPane 예제2  (0) 2016.12.21
JSplitPane 예제  (0) 2016.12.21
Thread를 이용한 디지털 시계  (0) 2016.12.21
[Swing] 달력만들기  (0) 2016.12.16
FileReader  (0) 2016.12.16
Posted by Hyun CHO
,

import java.awt.Font;

import java.util.Calendar;

import javax.swing.JFrame;

import javax.swing.JLabel;


public class ClockEx extends JFrame{

JLabel timeLbl = new JLabel();

Font fnt = new Font("Serif", Font.BOLD, 100);

public ClockEx(){

add(timeLbl, "Center");

timeLbl.setFont(fnt);

setTime();

pack();

setVisible(true);

while(true){

try{

Thread.sleep(1000);

}catch(Exception e){}

setTime();

}

}

public void setTime(){

Calendar cal = Calendar.getInstance();

int hour = cal.get(Calendar.HOUR_OF_DAY);

int minute = cal.get(Calendar.MINUTE);

int second = cal.get(Calendar.SECOND);

String timeStr = "";

if(hour<10){

timeStr="0"+hour+":";

}else{

timeStr=hour+":";

}

if(minute<10){

timeStr+="0"+minute+":";

}else{

timeStr+=minute+":";

}

if(second<10){

timeStr+="0"+second;

}else{

timeStr+=second;

}

timeLbl.setText(timeStr);

}

public static void main(String[] args) {

new ClockEx();


}

}



'응용 SoftWare > JAVA' 카테고리의 다른 글

JSplitPane 예제  (0) 2016.12.21
JTree 예제  (0) 2016.12.21
[Swing] 달력만들기  (0) 2016.12.16
FileReader  (0) 2016.12.16
[예제] 각종 메뉴를 이용한 메모장  (0) 2016.12.15
Posted by Hyun CHO
,

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Calendar;

import javax.swing.DefaultComboBoxModel;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;


public class SwingCalendar extends JFrame implements ActionListener{

//North

JPanel topPane = new JPanel();

JButton prevBtn = new JButton("◀");

JButton nextBtn = new JButton("▶");

JLabel yearLbl = new JLabel("년");

JLabel monthLbl = new JLabel("월");

JComboBox<Integer> yearCombo = new JComboBox<Integer>();

DefaultComboBoxModel<Integer> yearModel = new DefaultComboBoxModel<Integer>();

JComboBox<Integer> monthCombo = new JComboBox<Integer>();

DefaultComboBoxModel<Integer> monthModel = new DefaultComboBoxModel<Integer>();

//Center

JPanel centerPane = new JPanel(new BorderLayout());

JPanel titlePane = new JPanel(new GridLayout(1, 7));

String titleStr[] = {"일", "월", "화", "수", "목", "금", "토"};

JPanel datePane = new JPanel(new GridLayout(0, 7));

Calendar now;

int year, month, date;

public SwingCalendar() {

setDefaultCloseOperation(DISPOSE_ON_CLOSE); //자원 해제 후 종료

now = Calendar.getInstance(); //현재 날짜

year = now.get(Calendar.YEAR);

month = now.get(Calendar.MONTH)+1;

date = now.get(Calendar.DATE);

topPane.add(prevBtn);

for(int i=year-100; i<=year+50; i++){

yearModel.addElement(i);

}

yearCombo.setModel(yearModel);

yearCombo.setSelectedItem(year); //현재 년도 선택

topPane.add(yearCombo);

topPane.add(yearLbl);

for(int i=1; i<=12; i++){

monthModel.addElement(i);

}

monthCombo.setModel(monthModel);

monthCombo.setSelectedItem(month); //현재 월 선택

topPane.add(monthCombo);

topPane.add(monthLbl);

topPane.add(nextBtn);

topPane.setBackground(new Color(100, 200, 200));

add(topPane, "North");

//Center

titlePane.setBackground(Color.white);

for(int i=0; i<titleStr.length; i++){

JLabel lbl = new JLabel(titleStr[i], JLabel.CENTER);

if(i == 0){

lbl.setForeground(Color.red);

}else if(i == 6){

lbl.setForeground(Color.blue);

}

titlePane.add(lbl);

}

centerPane.add(titlePane, "North");

//날짜 출력

dayPrint(year, month);

centerPane.add(datePane, "Center");

add(centerPane, "Center");

setSize(400, 300);

setVisible(true);

prevBtn.addActionListener(this);

nextBtn.addActionListener(this);

yearCombo.addActionListener(this);

monthCombo.addActionListener(this);

}

//Overring

public void actionPerformed(ActionEvent ae){

Object obj = ae.getSource();

if(obj instanceof JButton){

JButton eventBtn = (JButton)obj;

int yy = (Integer)yearCombo.getSelectedItem();

int mm = (Integer)monthCombo.getSelectedItem();

if(eventBtn.equals(prevBtn)){ //전달

if(mm==1){

yy--; mm=12;

}else{

mm--;

}

}else if(eventBtn.equals(nextBtn)){ //다음달

if(mm==12){

yy++; mm=1;

}else{

mm++;

}

}

yearCombo.setSelectedItem(yy);

monthCombo.setSelectedItem(mm);

}else if(obj instanceof JComboBox){ //콤보박스 이벤트 발생시

createDayStart();

}

}

public void createDayStart(){

datePane.setVisible(false); //패널 숨기기

datePane.removeAll(); //날짜 출력한 라벨 지우기

dayPrint((Integer)yearCombo.getSelectedItem(), (Integer)monthCombo.getSelectedItem());

datePane.setVisible(true); //패널 재출력

}

public void dayPrint(int y, int m){

Calendar cal = Calendar.getInstance();

cal.set(y, m-1, 1); //출력할 첫날의 객체 만든다.

int week = cal.get(Calendar.DAY_OF_WEEK); //1일에 대한 요일 일요일 : 0

int lastDate = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //그 달의 마지막 날

for(int i=1; i<week; i++){ //날짜 출력 전까지의 공백 출력

datePane.add(new JLabel(" "));

}

for(int i=1; i<=lastDate; i++){

JLabel lbl = new JLabel(String.valueOf(i), JLabel.CENTER);

cal.set(y, m-1, i);

int outWeek = cal.get(Calendar.DAY_OF_WEEK);

if(outWeek==1){

lbl.setForeground(Color.red);

}else if(outWeek==7){

lbl.setForeground(Color.BLUE);

}

datePane.add(lbl);

}

}

public static void main(String[] args) {

new SwingCalendar();


}


}



'응용 SoftWare > JAVA' 카테고리의 다른 글

JTree 예제  (0) 2016.12.21
Thread를 이용한 디지털 시계  (0) 2016.12.21
FileReader  (0) 2016.12.16
[예제] 각종 메뉴를 이용한 메모장  (0) 2016.12.15
[예제] 은행 대기열 만들기  (0) 2016.12.14
Posted by Hyun CHO
,