Sponsored By
















728x90

728x90

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

2019. 08. 12. 월. 점심.  (0) 2019.08.12
2019. 08. 10. 토. 점심.  (0) 2019.08.10
2019. 08. 07. 수. 저녁.  (0) 2019.08.07
2019. 08. 04. 일. 저녁.  (0) 2019.08.05
2019. 08. 01. 목. 저녁.  (0) 2019.08.02
728x90

 

GUI에서 탭(Tab) 만드는 방법임.

 

 

 

 

 

 

 

 

00. 기본값은 아래와 같이 만들고 실행한다.







01. 기본 탭이 만들어진 것을 확인할 수 있다.







02. 다음 순서를 따른다.

① 현재 자바 프로젝트에 새폴더(image로 명)를 만든다.

② 이 폴더에 이미지파일(.png)을 가져다 놓는다.

③ 다음과같이 입력하여 JLabel 안에 이미지를 추가한다.

④ 이미지가 정상적으로 들어간 것을 확인할 수 있다.







03. class로 만들어줘서 그 클래스를 불러오는 방법.

 

 

 

 

 

※. 코드

 

 

import java.awt.BorderLayout;

import java.awt.FlowLayout;

 

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTabbedPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

 

 

class MyFrame extends JFrame {

 

public MyFrame()

{

this.setTitle("No Title");

}// MyFrame Constructor

 

 

public MyFrame(String title)

{

createFrame(title);

 

JTabbedPane pane = createTabbedPane();  // 탭에서 메뉴바와 같은 기능

 

this.add(pane, BorderLayout.CENTER); 

 

 

}

 

 

public JTabbedPane createTabbedPane()

{

JTabbedPane pane = new JTabbedPane();

 

pane.addTab("Tab 1", new JLabel("Tab menu 1 "));

pane.addTab("Tab 2", new JLabel( new ImageIcon("image/test.png") ));  // 레이블에 이미지도 가능

pane.addTab("Tab 3", new MyPanel() );

 

return pane;

}

 

 

void createFrame(String title){

 

this.setTitle(title);

this.setSize(500,400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

this.setLayout( new BorderLayout() );

 

 

this.setVisible(true);

 

}// createFrame Constructor

 

}// MyFrame Class

 

 

class MyPanel extends JPanel{

 

public MyPanel()

{

this.setLayout( new FlowLayout() );

JTextArea display = new JTextArea(15, 40); 

JTextField input = new JTextField(40); // 40열

 

this.add(display);

this.add(input);

 

}

 

}

 

 

public class Test {

 

public static void main(String[] args) {

 

new MyFrame("GUI TEST");

 

}// main

 

}// Main Class

 

 

 

 

 

 

 

 

 

728x90
728x90

 

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

 

 

 

 

 

728x90
728x90

 

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();

}

 

}

 

 

 

 

 

 

 

 

 

 

728x90
728x90

 

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

 

 

 

 

 

 

 

 

728x90


Sponsored By















+ Recent posts