'응용 SoftWare/JAVA'에 해당되는 글 76건

  1. 2016.12.21 JSplitPane 예제2
  2. 2016.12.21 JSplitPane 예제
  3. 2016.12.21 JTree 예제
  4. 2016.12.21 Thread를 이용한 디지털 시계
  5. 2016.12.16 [Swing] 달력만들기
  6. 2016.12.16 FileReader
  7. 2016.12.15 [예제] 각종 메뉴를 이용한 메모장
  8. 2016.12.14 [예제] 은행 대기열 만들기
  9. 2016.12.14 HashMap
  10. 2016.12.14 TreeSet

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JSplitPane;

import javax.swing.JTextArea;


public class JSplitPaneTest2 extends JFrame{

JSplitPane sp1, sp2;

public JSplitPaneTest2() {

sp2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new CalculatorT(), new SwingCalendar());

sp2.setDividerLocation(385);

sp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, new Grimpan(), sp2);

sp1.setDividerLocation(300);

add(sp1, "Center");

setSize(800, 600);

setVisible(true);

}


public static void main(String[] args) {

new JSplitPaneTest2();


}


}

=====================================================================

그림판

import java.awt.BorderLayout;

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;


public class Grimpan extends JPanel implements ActionListener {

JPanel p = new JPanel(new GridLayout(1, 0));

JButton penTool = new JButton("펜");

JButton lineTool = new JButton("선");

JButton ovalTool = new JButton("원");

JButton rectTool = new JButton("사각형");

MyCanvas mc = new MyCanvas();

JPanel p2 = new JPanel(new GridLayout(1, 0));

JButton red = new JButton("Red");

JButton green = new JButton("Green");

JButton blue = new JButton("Blue");

JButton yellow = new JButton("Yellow");

String tool = "선", color = "Blue";

public Grimpan() {

setLayout(new BorderLayout());

p.add(penTool); p.add(lineTool); p.add(ovalTool); p.add(rectTool);

add(p, "North");

add(mc, "Center");

red.setBackground(Color.red); green.setBackground(Color.GREEN); blue.setBackground(Color.BLUE); blue.setForeground(Color.WHITE); yellow.setBackground(Color.YELLOW);

p2.add(red); p2.add(green); p2.add(blue); p2.add(yellow);

add(p2, "South");

setSize(500, 500);

setVisible(true);

penTool.addActionListener(this);

lineTool.addActionListener(this);

ovalTool.addActionListener(this);

rectTool.addActionListener(this);

red.addActionListener(this);

green.addActionListener(this);

blue.addActionListener(this);

yellow.addActionListener(this);

}

class MyCanvas extends Canvas implements MouseListener, MouseMotionListener {

int firstX, firstY, lastX, lastY;

int x, y;

MyCanvas() {

addMouseListener(this);

addMouseMotionListener(this);

}

public void paint(Graphics g) {

// color

if (color.equals("Red"))

g.setColor(Color.RED);

else if (color.equalsIgnoreCase("Green"))

g.setColor(Color.GREEN);

else if (color.equals("Blue"))

g.setColor(Color.BLUE);

else if (color.equals("Yellow"))

g.setColor(Color.YELLOW);

// type of drawing tool

if (tool.equals("선"))

g.drawLine(firstX, firstY, lastX, lastY);

else if (tool.equalsIgnoreCase("원"))

g.drawOval(firstX, firstY, (lastX - firstX), (lastY - firstY));

else if (tool.equals("사각형"))

g.drawRect(firstX, firstY, lastX - firstX, lastY - firstY);

else if (tool.equals("펜")) {

g.drawLine(x, y, lastX, lastY);

x = lastX;

y = lastY;

}

}


public void update(Graphics g) {

paint(g);

}

@Override

public void mouseClicked(MouseEvent me) {};

@Override

public void mouseEntered(MouseEvent me) {};

@Override

public void mouseExited(MouseEvent me) {};

@Override

public void mousePressed(MouseEvent me) {

// System.out.println("pressed");

firstX = me.getX();

firstY = me.getY();

x = firstX;

y = firstY;

}

@Override

public void mouseReleased(MouseEvent me) {

// System.out.println("Released");

lastX = me.getX();

lastY = me.getY();

repaint();

}

// MouseMotionListener

@Override

public void mouseDragged(MouseEvent me) {

if (tool.equals("펜")) {

lastX = me.getX();

lastY = me.getY();

repaint();

}

}

@Override

public void mouseMoved(MouseEvent me) {};

}


@Override

public void actionPerformed(ActionEvent ae) {

String eventStr = ae.getActionCommand();

if (eventStr.equals("펜") || eventStr.equals("선") || eventStr.equals("원") || eventStr.equals("사각형"))

tool = eventStr;

else

color = eventStr;

// System.out.println("tool = " + tool + ", " + "color = " + color);

}


public static void main(String[] args) {

new Grimpan();

}

}

=====================================================================
달력
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 JPanel 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() {
setLayout(new BorderLayout());
//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();

//}

}
=====================================================================
계산기
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class CalculatorT extends JPanel implements ActionListener {
JFrame jf = new JFrame("계산기");
JLabel jl = new JLabel("0.0", JLabel.RIGHT);
//버튼틀
JPanel jp = new JPanel();
String butValue[] = {"Clear","BackSpace","End","","7","8","9","+","4","5","6","-",
"1","2","3","*","0",".","=","/"};
JButton jb[] = new JButton[20];
public CalculatorT() {
//라벨 추가
//add(jl, "North"); //BorderLayout.NORTH
setLayout(new BorderLayout());
//버튼
jp.setLayout(new GridLayout(5, 4));
for(int i=0; i<butValue.length; i++){ //버튼 생성, 패널 추가
jb[i] = new JButton(butValue[i]);
jp.add(jb[i]); //패널추가
jb[i].addActionListener(this); //이벤트 등록
}
add(jp, BorderLayout.CENTER);
//jf.setSize(400, 400);
//jf.setVisible(true);
}
//오버라이딩
public void actionPerformed(ActionEvent ae){}

// public static void main(String[] args) {
// new CalculatorT();
//
// }

}


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

Thread Test 1  (0) 2016.12.23
Class Test  (0) 2016.12.23
JSplitPane 예제  (0) 2016.12.21
JTree 예제  (0) 2016.12.21
Thread를 이용한 디지털 시계  (0) 2016.12.21
Posted by Hyun CHO
,

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JSplitPane;

import javax.swing.JTextArea;


public class JSplitPaneTest extends JFrame{

JSplitPane sp1, sp2;

public JSplitPaneTest() {

sp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, new JTextArea("위"), new RGB2());

sp2.setDividerLocation(300);

sp1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JButton("확인"), sp2);

sp1.setDividerLocation(300); //경계선의 위치

//sp1.setDividerSize(5); //경계선의 두께

sp1.setOneTouchExpandable(true); //경계선 내에 확장, 축소 버튼 표시

add(sp1, "Center");

setSize(800, 600);

setVisible(true);

}


public static void main(String[] args) {

new JSplitPaneTest();

}


}

=====================================================================
RGB 소스

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class RGB2 extends JPanel implements ChangeListener{
JLabel rgbLbl = new JLabel("RGB(150, 150, 150)", JLabel.CENTER);
JPanel rgbView = new JPanel();
int red=150, green=150, blue=150;
Color color = new Color(150, 150, 150);
//패널만들기
JPanel rgbInfo = new JPanel(new BorderLayout());
JPanel labelPane = new JPanel(new GridLayout(3, 1));
JLabel redLbl = new JLabel("RED");
JLabel greenLbl = new JLabel("GREEN");
JLabel blueLbl = new JLabel("BLUE");
JPanel sliderPane = new JPanel(new GridLayout(3, 1));
JSlider redSlider = new JSlider(0, 255, 150);
JSlider greenSlider = new JSlider(0, 255, 150);
JSlider blueSlider = new JSlider(0, 255, 150);
JPanel colorPane = new JPanel(new GridLayout(3, 1));
JLabel redClrLbl = new JLabel("                    ");
JLabel greenClrLbl = new JLabel("                    ");
JLabel blueClrLbl = new JLabel("                    ");
public RGB2() {
setLayout(new BorderLayout());
add(rgbLbl, "North");
rgbView.setBackground(color); //패널컬러세팅
add(rgbView, "Center");
labelPane.add(redLbl); labelPane.add(greenLbl); labelPane.add(blueLbl);
rgbInfo.add(labelPane, "West");
redSlider.setMajorTickSpacing(50);
redSlider.setMinorTickSpacing(5);
redSlider.setPaintTicks(true);
redSlider.setPaintLabels(true);
greenSlider.setMajorTickSpacing(50);
greenSlider.setMinorTickSpacing(5);
greenSlider.setPaintTicks(true);
greenSlider.setPaintLabels(true);
blueSlider.setMajorTickSpacing(50);
blueSlider.setMinorTickSpacing(5);
blueSlider.setPaintTicks(true);
blueSlider.setPaintLabels(true);
sliderPane.add(redSlider); sliderPane.add(greenSlider); sliderPane.add(blueSlider);
rgbInfo.add(sliderPane, "Center");
LineBorder lb = new LineBorder(Color.CYAN, 3);
TitledBorder tb = new TitledBorder(lb, "Color Split", TitledBorder.CENTER, 
TitledBorder.CENTER, new Font("Serif", Font.BOLD, 15), Color.BLACK);
rgbInfo.setBorder(tb);
redClrLbl.setOpaque(true);
redClrLbl.setBackground(new Color(150, 0, 0));
greenClrLbl.setOpaque(true);
greenClrLbl.setBackground(new Color(0, 150, 0));
blueClrLbl.setOpaque(true);
blueClrLbl.setBackground(new Color(0, 0, 150));
colorPane.add(redClrLbl); colorPane.add(greenClrLbl); colorPane.add(blueClrLbl);
rgbInfo.add(colorPane, "East");
add(rgbInfo, "South");
// setSize(500, 350);
// setVisible(true);

//이벤트 등록
redSlider.addChangeListener(this);
greenSlider.addChangeListener(this);
blueSlider.addChangeListener(this);
}
public void stateChanged(ChangeEvent ce){
Object obj = ce.getSource();
if(obj == redSlider){
red = redSlider.getValue();
redClrLbl.setBackground(new Color(red, 0, 0));
}else if(obj == greenSlider){
green = greenSlider.getValue();
greenClrLbl.setBackground(new Color(0, green, 0));
}else if(obj == blueSlider){
blue = blueSlider.getValue();
blueClrLbl.setBackground(new Color(0, 0, blue));
}
rgbView.setBackground(new Color(red, green, blue));
rgbLbl.setText("RGB("+red+", "+green+", "+blue+")");
}
}


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

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

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
,

FileReader

응용 SoftWare/JAVA 2016. 12. 16. 17:47

콘솔에 파일 내용 출력

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;


public class FileReaderTest {


public FileReaderTest() {

try{

FileReader fr = new FileReader("Z:/fileFolder/test.txt");

BufferedReader br = new BufferedReader(fr);

while(true){

String input = br.readLine();

if(input == null){

break;

}

System.out.println(input);

}

}catch(IOException i){

System.out.println("예외발생");

}

}


public static void main(String[] args) {

new FileReaderTest();

}


}


=====================================================================

TextArea에 파일 내용 출력

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;


import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;


public class FileReaderEx extends JFrame{

JTextArea ta = new JTextArea();

public FileReaderEx() {

JScrollPane sp = new JScrollPane(ta);

add(sp, "Center");

setSize(500, 500);

setVisible(true);

try{

//파일의 내용을 읽어 TextArea 에 출력

FileReader fr = new FileReader("Z://fileFolder/test.txt");

BufferedReader br = new BufferedReader(fr);

while(true){

String txt = br.readLine();

if(txt == null)break;

ta.append(txt +"\n");

}

}catch(Exception e){

}

}


public static void main(String[] args) {

new FileReaderEx();


}


}



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

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

import java.awt.Color;

import java.awt.Font;

import java.awt.GraphicsEnvironment;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.io.File;

import java.io.IOException;

import java.nio.file.attribute.FileStoreAttributeView;

import javax.swing.DefaultListModel;

import javax.swing.JButton;

import javax.swing.JColorChooser;

import javax.swing.JDialog;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.KeyStroke;

import javax.swing.filechooser.FileFilter;

import javax.swing.filechooser.FileNameExtensionFilter;

import javax.swing.plaf.basic.BasicCheckBoxMenuItemUI;;



public class MenuEx extends JFrame implements ActionListener{

JScrollPane sp;

JTextArea ta = new JTextArea("메뉴 만들기");

JMenuBar menuBar = new JMenuBar();

JMenu fileMenu = new JMenu("파일");

JMenuItem newMenu = new JMenuItem("새글");

JMenuItem openMenu = new JMenuItem("열기");

JMenuItem saveMenu = new JMenuItem("저장");

JMenuItem endMenu = new JMenuItem("종료");

JMenu editMenu = new JMenu("편집");

JMenuItem copyMenu = new JMenuItem("복사");

JMenuItem cutMenu = new JMenuItem("오려두기");

JMenuItem pasteMenu = new JMenuItem("붙여넣기");

JMenu formMenu = new JMenu("서식");

JMenuItem fontMenu = new JMenuItem("글꼴");

JMenu colorMenu = new JMenu("색상표");

JMenuItem textColor = new JMenuItem("글자색");

JMenuItem backColor = new JMenuItem("배경색");

JMenu runMenu = new JMenu("실행");

JMenuItem chromMenu = new JMenuItem("크롬");

JMenuItem exepMenu = new JMenuItem("익스플로러");

JMenuItem memoMenu = new JMenuItem("메모장");

String textBuffer; //복사, 오려두기한 문자 저장 할 변수

//Dialog(내부 클래스) 객체 생성

FontDialog fDialog = new FontDialog();

public MenuEx() {

//단축키 설정

//컨트로+N 으로 새창열기

newMenu.setMnemonic(KeyEvent.VK_N);

newMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));

//알트+O 으로 열기창 열기

openMenu.setMnemonic(KeyEvent.VK_O);

openMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.ALT_MASK));

// 종료하기

endMenu.setMnemonic(KeyEvent.VK_X);

endMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.ALT_MASK));

//이벤트 등록

newMenu.addActionListener(this); //파일

openMenu.addActionListener(this);

saveMenu.addActionListener(this);

endMenu.addActionListener(this);

copyMenu.addActionListener(this); //편집

cutMenu.addActionListener(this);

pasteMenu.addActionListener(this);

fontMenu.addActionListener(this); //서식

textColor.addActionListener(this);

backColor.addActionListener(this);

chromMenu.addActionListener(this); //실행

exepMenu.addActionListener(this);

memoMenu.addActionListener(this);

//메뉴 만들기

//파일

fileMenu.add(newMenu); fileMenu.add(openMenu); fileMenu.add(saveMenu); 

fileMenu.addSeparator();//경계선 만들기

fileMenu.add(endMenu);

menuBar.add(fileMenu);

//편집

editMenu.add(copyMenu); editMenu.add(cutMenu); editMenu.add(pasteMenu);

menuBar.add(editMenu);

//서식

formMenu.add(fontMenu); formMenu.add(colorMenu);

colorMenu.add(textColor); colorMenu.add(backColor);

menuBar.add(formMenu); 

//실행

runMenu.add(chromMenu); runMenu.add(exepMenu); runMenu.add(memoMenu);

menuBar.add(runMenu);

setJMenuBar(menuBar); //JFrame 컨테이너에 메뉴바 추가

sp = new JScrollPane(ta);

add(sp);

setSize(800, 500);

setVisible(true);

}

//내부 클래스 시작

class FontDialog extends JDialog implements ActionListener{

JPanel northPane = new JPanel(new GridLayout(1, 3));

JLabel lbl1 = new JLabel("글꼴");

JLabel lbl2 = new JLabel("글꼴 유형");

JLabel lbl3 = new JLabel("글자 크기");

JPanel centerPane = new JPanel(new GridLayout(1, 3));

JScrollPane sp1, sp3;

JList<String> list1 = new JList<String>();

JList<String> list2 = new JList<String>();

JList<Integer> list3 = new JList<Integer>();

JPanel southPane = new JPanel();

JButton okBtn = new JButton("확인");

JButton cancleBtn = new JButton("취소");

//List 모델 만들기

DefaultListModel<String> fontModel = new DefaultListModel<String>();

DefaultListModel<String> typeModel = new DefaultListModel<String>();

DefaultListModel<Integer> sizeModel = new DefaultListModel<Integer>();

FontDialog(){

setModal(true); //모달 세팅 : dialog창 뒤면 비활성화

northPane.add(lbl1);northPane.add(lbl2); northPane.add(lbl3);

add(northPane, "North");

//List 목록 만들기

//시스템에서 지원하는 글꼴정보 얻어오기

String fontName[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

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

fontModel.addElement(fontName[i]);

}

list1.setModel(fontModel);

//글자 유형 만들기

String typeName[] = {"보통", "진하게", "기울림꼴"};

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

typeModel.addElement(typeName[i]);

}

list2.setModel(typeModel);

//글자 크기

for(int i=8; i<100; i+=2){

sizeModel.addElement(i);

}

list3.setModel(sizeModel);

sp1 = new JScrollPane(list1);

sp3 = new JScrollPane(list3);

centerPane.add(sp1); centerPane.add(list2); centerPane.add(sp3);

add(centerPane, "Center");

southPane.add(okBtn);

southPane.add(cancleBtn);

add(southPane, "South");

setSize(300, 300);

//이벤트 등록 : 두개의 버튼은 클릭하면 내부 클래스 오버라이딩으로 넘어간다.

okBtn.addActionListener(this);

cancleBtn.addActionListener(this);

}

//내부 클래스 오버라이딩

public void actionPerformed(ActionEvent ae){

String eventValue = ae.getActionCommand();

if(eventValue.equals("확인")){

Font fnt = new Font(list1.getSelectedValue(), list2.getSelectedIndex(), list3.getSelectedIndex());

ta.setFont(fnt);

setVisible(false);

}else if(eventValue.equals("취소")){

//dispose

setVisible(false);

}

}

}

//내부 클래스 끝

//오버라이딩

public void actionPerformed(ActionEvent ae){

Object obj = ae.getSource();

if(obj == endMenu){

dispose(); System.exit(0);

}else if(obj == newMenu){ //새글

ta.setText("");

}else if(obj == textColor){ //글자색

setTextColor();

}else if(obj == backColor){ //배경색

setBackColor();

}else if(obj == memoMenu){ //메모장 실행

run("notepad.exe");

}else if(obj == chromMenu){ //크롬 실행

run("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");

}else if(obj == exepMenu){ //ie 실행

run("C:/Program Files/Internet Explorer/iexplore.exe");

}else if(obj == openMenu){ //열기

fileOpen();

}else if(obj == saveMenu){ //저장

fileSave();

}else if(obj == copyMenu){ //복사하기

textCopy();

}else if(obj == pasteMenu){ //붙여넣기

textPaste();

}else if(obj == cutMenu){ //오려두기

textCut();

}else if(obj == fontMenu){

fDialog.setVisible(true);

}

}

//오려두기

public void textCut(){

textBuffer = ta.getSelectedText();

ta.replaceSelection("");

}

//붙여넣기

public void textPaste(){

ta.replaceSelection(textBuffer);

}

//복사 실행

public void textCopy(){

textBuffer = ta.getSelectedText();

}

//저장 실행

public void fileSave(){

JFileChooser fc = new JFileChooser();

int fileCount = fc.showSaveDialog(this);

File f = fc.getSelectedFile();

//getPath() : 경로 + 파일명, getName() : 파일명 구함

ta.append(f.getPath()+"="+f.getName()+"\n");

}

//열기 실행

public void fileOpen(){

JFileChooser fc = new JFileChooser();

fc.setMultiSelectionEnabled(true); //다중 선택 기능

//필터 객체 생성

FileFilter ff1 = new FileNameExtensionFilter("java", "Java", "JAVA", "JaVa");

fc.addChoosableFileFilter(ff1);//JFilechooser 객체에 필터 세팅

FileFilter ff2 = new FileNameExtensionFilter("class", "Class", "CLASS");

fc.addChoosableFileFilter(ff2);//JFilechooser 객체에 필터 세팅

FileFilter ff3 = new FileNameExtensionFilter("png", "jpg", "gif");

fc.addChoosableFileFilter(ff3);//JFilechooser 객체에 필터 세팅

//선택된 파일의 갯수가 리턴됨

int fileSelectCount = fc.showOpenDialog(this);

File f[] = fc.getSelectedFiles(); //선택된 파일 목록 얻어오기

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

ta.append(f[i].getName()+"\n"); //파일명

}

}

//메모장 실행 예외처리

public void run(String programName){

Runtime run = Runtime.getRuntime();

try{

run.exec(programName);

}catch(IOException ie){

System.out.println(ie.getMessage()+"예외발생");

}

}

public void setTextColor(){ //글자색

JColorChooser cc = new JColorChooser();

// 부모컨테이너, 창제목, 기본컬러

Color color = cc.showDialog(this, "글자색", Color.black);

ta.setForeground(color);

}

public void setBackColor(){

JColorChooser cc = new JColorChooser();

Color color = cc.showDialog(this, "배경색", Color.white);

ta.setBackground(color);

}

public static void main(String[] args) {

new MenuEx();

}


}



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

[Swing] 달력만들기  (0) 2016.12.16
FileReader  (0) 2016.12.16
[예제] 은행 대기열 만들기  (0) 2016.12.14
HashMap  (0) 2016.12.14
TreeSet  (0) 2016.12.14
Posted by Hyun CHO
,

화면 1. 메인

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Calendar;

import java.util.LinkedList;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;


public class QueueEx extends JFrame implements ActionListener{

JPanel leftPane = new JPanel(new GridLayout(4, 1));

JButton createBtn = new JButton("번호표 뽑기");

JLabel createNum = new JLabel();

JLabel viewNum = new JLabel("대기인수 : 0명", JLabel.CENTER);

JPanel rigthPane = new JPanel(new GridLayout(6, 1));

JButton sawon1 = new JButton("은행원 1");

JButton sawon2 = new JButton("은행원 2");

JButton sawon3 = new JButton("은행원 3");

JLabel msg1 = new JLabel();

JLabel msg2 = new JLabel();

JLabel msg3 = new JLabel();

int n = 0;

LinkedList<GuestInfo> queue = new LinkedList<GuestInfo>();

public QueueEx() {

setLayout(new GridLayout(1, 3));

leftPane.add(new JLabel());

leftPane.add(createBtn);

leftPane.add(createNum);

add(leftPane);

add(viewNum);

rigthPane.add(sawon1);

rigthPane.add(msg1);

rigthPane.add(sawon2);

rigthPane.add(msg2);

rigthPane.add(sawon3);

rigthPane.add(msg3);

add(rigthPane);

setSize(500, 300);

setVisible(true);

createBtn.addActionListener(this);

sawon1.addActionListener(this);

sawon2.addActionListener(this);

sawon3.addActionListener(this);

}

public void actionPerformed(ActionEvent ae) {

Object eventobj = ae.getSource();

if(eventobj == createBtn){

numberProcess();

}else if(eventobj == sawon1){

sawonProcess(msg1);

}else if(eventobj == sawon2){

sawonProcess(msg2);

}else if(eventobj == sawon3){

sawonProcess(msg3);

}

}

public void sawonProcess(JLabel msgLbl){

if(queue.size()<=0){

msgLbl.setText("대기자가 없습니다.");

}else{

GuestInfo guest = queue.poll();

msgLbl.setText(createMsg(guest.getNum(), guest.getCal()));

}

viewNum.setText("대기인수 : "+queue.size()+"명");

}

public void numberProcess(){

n++;

Calendar cal = Calendar.getInstance();

GuestInfo info = new GuestInfo();

info.setNum(n);

info.setCal(cal);

queue.offer(info);

viewNum.setText("대기인수 : "+queue.size()+"명");

createNum.setText(createMsg(n, cal));

}

public String createMsg(int n, Calendar cal){

String msg = "번호 : "+n+" (";

msg += cal.get(Calendar.YEAR)+"/"+(cal.get(Calendar.MONTH)+1)+"/";

msg += cal.get(Calendar.DATE)+" "+cal.get(Calendar.HOUR)+":";

msg += cal.get(Calendar.MINUTE)+":"+cal.get(Calendar.SECOND)+")";

return msg;

}

public static void main(String[] args) {

new QueueEx();


}




}

=====================================================================
화면 2. 순번과 달력(시간)

import java.util.Calendar;
import java.util.function.Predicate;
import javax.management.loading.PrivateClassLoader;

public class GuestInfo {
private int num;
private Calendar cal;
public int getNum() {
return num;
}

public void setNum(int num) {
this.num = num;
}

public Calendar getCal() {
return cal;
}

public void setCal(Calendar cal) {
this.cal = cal;
}

public GuestInfo() {

}

}


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

FileReader  (0) 2016.12.16
[예제] 각종 메뉴를 이용한 메모장  (0) 2016.12.15
HashMap  (0) 2016.12.14
TreeSet  (0) 2016.12.14
HashSet  (0) 2016.12.14
Posted by Hyun CHO
,

HashMap

응용 SoftWare/JAVA 2016. 12. 14. 17:02

import java.util.Collection;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Set;


public class HashMapTest {

public HashMapTest() {

HashMap<String, Integer> hm = new HashMap<String, Integer>();

//map 객체 추가

hm.put("홍길동", 100);

hm.put("이순신", 60);

hm.put("세종대왕", 90);

hm.put("최영", 80);

System.out.println(hm.get("이순신")); //값 구하기

//키 값(객체) 얻어오기

Set<String> set = hm.keySet();

Iterator<String> ii = set.iterator();

while(ii.hasNext()){

String key = ii.next();

System.out.println(key+"="+hm.get(key));

}

System.out.println("==========");

//value 만 얻어오기

Collection<Integer> collection =  hm.values();

Iterator<Integer> iii = collection.iterator();

while(iii.hasNext()){

System.out.println(iii.next());

}

}

public static void main(String[] args) {

new HashMapTest();

}

}



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

[예제] 각종 메뉴를 이용한 메모장  (0) 2016.12.15
[예제] 은행 대기열 만들기  (0) 2016.12.14
TreeSet  (0) 2016.12.14
HashSet  (0) 2016.12.14
LinkedList  (0) 2016.12.14
Posted by Hyun CHO
,

TreeSet

응용 SoftWare/JAVA 2016. 12. 14. 17:01

import java.util.Iterator;

import java.util.TreeSet;


public class TreeSetTest {

String list[] = {"Java", "자바", "홍길동", "Spring", "1234", "Java", "자바", "홍길동", "Spring", "1234"};

public TreeSetTest() {

//중복제거, 정렬

TreeSet<String> ts = new TreeSet<String>();

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

ts.add(list[i]);

}

//출력

Iterator<String> ii = ts.iterator();

while(ii.hasNext()){

System.out.println(ii.next());

}

System.out.println("==========");

//역순으로 객첵루하기

Iterator<String> iii = ts.descendingIterator();

while(iii.hasNext()){

System.out.println(iii.next());

}

}


public static void main(String[] args) {

new TreeSetTest();


}


}



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

[예제] 은행 대기열 만들기  (0) 2016.12.14
HashMap  (0) 2016.12.14
HashSet  (0) 2016.12.14
LinkedList  (0) 2016.12.14
Stack  (0) 2016.12.14
Posted by Hyun CHO
,