Sponsored By
















 

GUI에 메뉴바(MenuBar) 만드는 방법임.

 

 

 

 

 

먼저, 간단한 설명.!

 

 

메뉴바 를 누르면 메뉴 아이템들이 나온다. 

그런데, 메뉴아이템들중에 마우스를 가져다 놓으면 옆으로 또 아이템들이 나오게하는 메뉴아이템이 있는데,

이 기능을 하는 아이템은 그냥 다시 메뉴 라고 부른다.

 

 

 

 

 

 

 

00. 코딩하고 실행한다.









01. 'file', 'Edit' 메뉴바가 만들어진것을 확인할 수 있다.







02. 분리선 까지 잘 만들어진 것을 확인할 수 있다.







03. 키보드 'e' 를 누르면 Event Test 메뉴아이템이 눌리도록 KeyEvent를 설정하고 확인할 수 있다.







04. 메뉴아이템 속에 메뉴를 다시 만들어서 그 안에서 메뉴아이템을 확인할 수도 있다.







05_1. 전체적인 코드







05_2. 전체적인 결과 값.

 

 

 

 

 

 

※. 코드

 

 

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

 

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

 

class MyFrame extends JFrame implements ActionListener {

 

JMenuItem eventTestItem;

 

public MyFrame()

{

this.setTitle("Menu Title");

this.setSize(500,400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

// Programming Here

createMenu();

 

this.setVisible(true);

}// MyFrame Constructor

 

 

public void createMenu(){

 

JMenuBar mb = new JMenuBar();  // 메뉴바 생성

JMenu fileMenu = new JMenu("File");  // File 이라는 이름의 메뉴 생성

JMenu editMenu = new JMenu("Edit");  // Edit 라는 이름의 메뉴 생성

 

mb.add(fileMenu);

 

// Menu Item

fileMenu.add( new JMenuItem("New"));

fileMenu.add( new JMenuItem("Open"));

fileMenu.add( new JMenuItem("Close"));

 

fileMenu.addSeparator();  // 분리선

 

 

eventTestItem = new JMenuItem("Event Test", KeyEvent.VK_E);  // 메뉴아이템을 만들고 이름을 Event Test 로 지정

fileMenu.add(eventTestItem);

eventTestItem.addActionListener(this);

 

fileMenu.addSeparator();  // 분리선

 

 

JMenu submenu = new JMenu("서브메뉴");  

fileMenu.add(submenu);

 

submenu.add( new JMenuItem("Sub Menu 1") );

submenu.add( new JMenuItem("Sub Menu 2") );

 

 

 

mb.add(editMenu);

mb.add( new JMenu("Source") );

 

this.setJMenuBar(mb);  // Main Frame 에 메뉴바 붙임

 

 

}// createMenu Constructor

 

@Override

public void actionPerformed(ActionEvent e) {

if ( e.getSource() == eventTestItem ) 

{

System.out.println(" Execute Event Test Menu ");

}

}// Override actionPerformed 

 

 

}// MyFrame Class

 

 

public class Test {

 

public static void main(String[] args) {

new MyFrame();  

 

}// main

 

}// Main Class

 

 

 

 

 

 

GUI 에 임의의 창을 만들고 각종 이벤트를 사용해 보겠다.

 

 

 

 

 

사용할 이벤트는 'KeyListener', 'MouseListener', 'ComponentListener' 이다.

 

 

 

 

 

 

 

 

00. 입력하고 실행시켜보자.







01. 창이 뜨는것을 확인할 수 있다.







02. 마우스 창내에 들어갔다 나갔다 했던것을 확인할 수 있다.







03. 누른것도 확인할 수 있다.

 

 

 

 

04. 만들어놓은 버튼을 누르면 색이 바뀌는 것을 확인할 수 있다.







05. 다음 버튼역시 지정해놓은 색으로 작동됨을 확인할 수 있다.







06. 누를 때마다 랜덤하게 색이 나온다.

 

 

 

 

 

 

※. 코드

 

 

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ComponentEvent;

import java.awt.event.ComponentListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

 

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

 

class MyFrame extends JFrame implements ActionListener,

ComponentListener, KeyListener, MouseListener

{

private JButton yellow;

private JButton green;

private JButton random;

private JTextArea debug;

private JTextField input;

private JPanel panel = new JPanel();

 

public MyFrame(){

this.setSize(500, 400);

this.setTitle("No Title");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

 

 

public MyFrame(String title)

{

this.setSize(500, 400);

this.setTitle(title);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

// Programming Here

this.setLayout(new BorderLayout());

panel.setLayout(new FlowLayout());

 

yellow = new JButton("Yellow");

green = new JButton("Green");

random = new JButton("Random");

 

debug = new JTextArea(10, 40);

JScrollPane scroll = new JScrollPane(debug);

 

input = new JTextField(40);

 

 

panel.add(yellow);

panel.add(green);

panel.add(random);

 

panel.add(scroll);

panel.add(input);

 

this.add(panel, BorderLayout.CENTER);

 

yellow.addActionListener(this);

green.addActionListener(this);

random.addActionListener(this);

 

panel.addComponentListener(this);

input.addKeyListener(this);

panel.addMouseListener(this);

 

this.setVisible(true);

}

@Override

public void mouseClicked(MouseEvent e) {

 

int x = e.getX();

int y = e.getY();

int count = e.getClickCount();

 

String info = "mouseClicked, " + x + ", " + y + "# " + count;

 

debug.append(info + "\n");

}

 

 

@Override

public void mouseEntered(MouseEvent e) {

 

int x = e.getX();

int y = e.getY();

int count = e.getClickCount();

 

String info = "mouseEntered, " + x + ", " + y + "# " + count;

debug.append(info + "\n");

}

 

@Override

public void mouseExited(MouseEvent e) {

 

int x = e.getX();

int y = e.getY();

int count = e.getClickCount();

 

String info = "mouseExited, " + x + ", " + y + "# " + count;

debug.append(info + "\n");

}

 

@Override

public void mousePressed(MouseEvent e) {

 

int x = e.getX();

int y = e.getY();

int count = e.getClickCount();

 

String info = "mousePressed, " + x + ", " + y + "# " + count;

debug.append(info + "\n");

}

 

@Override

public void mouseReleased(MouseEvent arg0) {

 

 

}

@Override

public void keyPressed(KeyEvent e) {

 

// A (CTRL, SHFT, ALT) = (true false true)

char c = e.getKeyChar();

String info = "(CTRL, SHFT, ALT) = (" + e.isControlDown() + e.isShiftDown() + e.isAltDown() + ")";

info = "PRESS " + c + info;

 

debug.append(info + "\n");

 

}

 

@Override

public void keyReleased(KeyEvent e) {

 

char c = e.getKeyChar();

String info = "(CTRL, SHFT, ALT) = (" + e.isControlDown() + e.isShiftDown() + e.isAltDown() + ")";

info = "RELEASE " + c + info;

debug.append(info + "\n");

}

 

@Override

public void keyTyped(KeyEvent e) {

 

char c = e.getKeyChar();

String info = "(CTRL, SHFT, ALT) = (" + e.isControlDown() + e.isShiftDown() + e.isAltDown() + ")";

info = "TYPED " + c + info;

debug.append(info + "\n");

}

 

@Override

public void componentHidden(ComponentEvent e) {

 

debug.append("componentHidden \n");

}

 

@Override

public void componentMoved(ComponentEvent e) {

 

debug.append("componentMoved \n");

}

 

@Override

public void componentResized(ComponentEvent e) {

 

debug.append("componentResized \n");

}

 

@Override

public void componentShown(ComponentEvent e) {

 

debug.append("componentShown \n");

}

 

@Override

public void actionPerformed(ActionEvent e) 

{

 

if(e.getSource() == yellow)

{

panel.setBackground(Color.YELLOW);

}

if(e.getSource() == green)

{

panel.setBackground(Color.GREEN);

}

if(e.getSource() == random)

{

int r, g, b;

r = (int)(Math.random() * 256);

g = (int)(Math.random() * 256);

b = (int)(Math.random() * 256);

 

Color c = new Color(r, g, b);

panel.setBackground(c);

}

}

 

}

 

public class Test {

 

public static void main(String[] args) {

 

MyFrame frame = new MyFrame("GUI TEST");

//MyFrame frame = new MyFrame();

}

 

}

 

 

 

 

 

 

 

 

 

 

 

GUI 에 채팅창 형태 를 만들어 보겠다.

 

 

 

 

 

 

 

 

00. textArea를 스크롤로 잡는 것에 유의하며 코딩하자.







01. 실행시킨 채팅창의 GUI화면







02. '123' 이라고 입력하고 'Enter' 를 눌러보자.







03. 스크롤에 잘 들어갔음을 확인할 수 있다.

 

 

 

 

 

 

※. 코드

 

 

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

 

class MyFrame extends JFrame implements ActionListener{

private JPanel displayPanel; 

private JPanel inputPanel;

 

private JTextArea display;

private JTextField input;

 

public MyFrame()

{

this.setTitle("My GUI");

this.setSize(500, 400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

/*

 * panel 생성하고, 필요한 컴포넌트를 만들기

 */

 

displayPanel = new JPanel();

displayPanel.setLayout(new FlowLayout());

display = new JTextArea(11, 30);

Font displayFont = new Font("Serif", Font.BOLD, 20);

display.setFont(displayFont);

display.setEditable(false);

 

// textarea를 스크롤이 되도록 변경

JScrollPane scroll = new JScrollPane(display);

displayPanel.add(scroll);

 

inputPanel = new JPanel();

inputPanel.setLayout(new FlowLayout());

input = new JTextField(30);

Font inputFont = new Font("Serif", Font.BOLD, 20);

input.setFont(inputFont);

input.addActionListener(this);

 

inputPanel.add(input);

 

/*

 * Frame에 두개의 panel을 붙이기

 */

this.setLayout(new BorderLayout());

this.add(displayPanel, BorderLayout.CENTER);

this.add(inputPanel, BorderLayout.SOUTH);

 

 

this.setVisible(true);

}

 

@Override

public void actionPerformed(ActionEvent e) {

 

if(e.getSource() == input)

{

display.append( input.getText() + "\n");

input.selectAll();

}

}

 

 

 

}

public class Test {

 

public static void main(String[] args) {

 

MyFrame frame = new MyFrame();

}// main

 

}// Main Class

 

 

 

 

 

 

 

 

여의도 IFC MALL - 아오리라멘 / 마제멘


'ETC > 먹방' 카테고리의 다른 글

2019. 08. 10. 토. 점심.  (0) 2019.08.10
2019. 08. 08. 목. 저녁.  (0) 2019.08.08
2019. 08. 04. 일. 저녁.  (0) 2019.08.05
2019. 08. 01. 목. 저녁.  (0) 2019.08.02
2019. 07. 31. 수. 저녁.  (0) 2019.07.31

 

GUI 에 계산기 만들기 완성하기.

 

 

 

 

 

 

 

형태 만들기 및 간단한 작동원리는 아래 주소 참조.

http://blog.naver.com/pandekten5/220776972561 

 

 

 

 

 

 

 

 

 

 

00. 코딩하고 실행 해보자.







01. 계산기 GUI창이 뜬다.







02. 임의의 숫자버튼(여기서는 2)을 눌러서 표기되는것을 확인하자.







03. 3/2 를 누르고 결과값이 맞게 출력되는지 확인하자.

    또한, 아래 3이 저장되어서 divide 오퍼레이션을 써서 된것을 확인할 수 있다.

 

 

 

 

 

 

 

※. 코드

 

 

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import java.awt.Font;

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;

import javax.swing.JTextField;

 

class MyFrame extends JFrame implements ActionListener

{

 

private JPanel displayPanel;

private JPanel buttonPanel;

private JPanel debugPanel;

 

private JTextField display;

 

private JButton[] buttons; // 0 ~ 9

private JButton btnPlus;

private JButton btnMinus;

private JButton btnProduct;

private JButton btnDivide;

private JButton btnEqual;

private JButton btnCE;

 

private JLabel prev;

private JLabel operator;

private JLabel flag;

 

 

public MyFrame()

{

this.setSize(300, 400);

this.setTitle("GUI TEST");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

// Programming Here

 

this.setLayout(new BorderLayout());

 

/*

 * 3개의 panel 객체 만들고 각자 layout 설정

 */

 

displayPanel = new JPanel();

buttonPanel = new JPanel();

debugPanel = new JPanel();

 

displayPanel.setLayout(new FlowLayout());

buttonPanel.setLayout(new GridLayout(0,4, 5, 5));

debugPanel.setLayout(new FlowLayout());

 

/*

 * displayPanel의 component를 만들어서 붙이기

 */

 

display = new JTextField(11);

display.setText("0");

display.setHorizontalAlignment(JTextField.RIGHT);

 

Font font = new Font("Serif", Font.BOLD, 30);

display.setFont(font);

 

 

 

 

displayPanel.add(display);

 

 

/*

 * buttonPanel에 component 만들고, 붙이기

 */

 

Font fontBtn = new Font("Serif", Font.BOLD, 20);

 

buttons = new JButton[10];

// 실제 버튼 객체 생성

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

{

//buttons[i] = new JButton("" + i);

buttons[i] = new JButton(Integer.toString(i));

buttons[i].setFont(fontBtn);

 

buttons[i].addActionListener(this);

}

 

btnPlus = new JButton("+");

btnMinus = new JButton("-");

btnProduct = new JButton("*");

btnDivide = new JButton("/");

btnEqual = new JButton("=");

btnCE = new JButton("CE");

 

btnPlus.addActionListener(this);

btnMinus.addActionListener(this);

btnProduct.addActionListener(this);

btnDivide.addActionListener(this);

btnEqual.addActionListener(this);

btnCE.addActionListener(this);

 

// 1 2 3 +

// 4 5 6 -

// 7 8 9 *

// 0 / = CE

 

buttonPanel.add(buttons[1]);

buttonPanel.add(buttons[2]);

buttonPanel.add(buttons[3]);

buttonPanel.add(btnPlus);

 

buttonPanel.add(buttons[4]);

buttonPanel.add(buttons[5]);

buttonPanel.add(buttons[6]);

buttonPanel.add(btnMinus);

 

buttonPanel.add(buttons[7]);

buttonPanel.add(buttons[8]);

buttonPanel.add(buttons[9]);

buttonPanel.add(btnProduct);

 

buttonPanel.add(buttons[0]);

buttonPanel.add(btnDivide);

buttonPanel.add(btnCE);

buttonPanel.add(btnEqual);

 

/*

 * debugPanel에 debugMsg, btnDebug 만들어서 붙이기

 */

prev = new JLabel("");

operator = new JLabel("");

flag = new JLabel("");

 

debugPanel.add( new JLabel("PREV:"));

debugPanel.add(prev);

 

debugPanel.add( new JLabel("OPERATOR:"));

debugPanel.add(operator);

 

debugPanel.add( new JLabel("FLAG:"));

debugPanel.add(flag);

 

 

 

/*

 * frame에다가 panel 붙이기

 */

this.add(displayPanel, BorderLayout.NORTH);

this.add(buttonPanel, BorderLayout.CENTER);

this.add(debugPanel, BorderLayout.SOUTH);

 

//debugPanel.setVisible(false);

 

this.setVisible(true);

}

 

@Override

public void actionPerformed(ActionEvent e) {

 

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

{

if(e.getSource() == buttons[i])

{

if(display.getText().equals("0"))

{

display.setText(""+i);

// display.setText(Integer.toString(i));

}else

{

if(operator.getText().equals(""))

{

display.setText(  display.getText() + i);

}else

{

if(flag.getText().equals(""))

{

display.setText(""+i);

flag.setText("#");

}else

{

display.setText(  display.getText() + i);

}

 

}

}

}

}

 

if(e.getSource() == btnEqual)

{

double op1, op2, result;

op1 = Double.parseDouble(prev.getText());  //문자->숫자(double)

op2 = Double.parseDouble(display.getText());

 

if(operator.getText().equals("+"))

{

result = op1 + op2;

display.setText("" + result);

// display.setText( String.valueOf(result));

}

if(operator.getText().equals("-"))

{

result = op1 - op2;

display.setText("" + result);

// display.setText( String.valueOf(result));

}

if(operator.getText().equals("*"))

{

result = op1 * op2;

display.setText("" + result);

// display.setText( String.valueOf(result));

}

if(operator.getText().equals("/"))

{

result = op1 / op2;

display.setText("" + result);

// display.setText( String.valueOf(result));

}

}

 

if(e.getSource() == btnPlus)

{

prev.setText( display.getText() );

operator.setText("+");

flag.setText("");

}

if(e.getSource() == btnMinus)

{

prev.setText( display.getText() );

operator.setText("-");

flag.setText("");

}

if(e.getSource() == btnProduct)

{

prev.setText( display.getText() );

operator.setText("*");

flag.setText("");

}

if(e.getSource() == btnDivide)

{

prev.setText( display.getText() );

operator.setText("/");

flag.setText("");

}

 

if(e.getSource() == btnCE)

{

display.setText("0");

prev.setText("");

operator.setText("");

flag.setText("");

}

 

}

 

 

 

}

 

 

public class Test {

 

public static void main(String[] args) {

 

MyFrame frame = new MyFrame();

}

 

}

 

 

 

 

 



Sponsored By















+ Recent posts