1. 다음 조건을 만족하며 클래스 JFrame을 상속받는 클래스를 구현하여 테스트하는 프로그램을 작성하시오.
- 윈도우의 하단에 색상을 표현하는 버튼 2개 추가
- 버튼을 누르면 윈도우 바탕을 선택한 버튼의 색상으로 수정
- 윈도우의 캡션 제목은 "버튼 액션 이벤트 처리"
import java.awt.BorderLayout;
import java.awt.Color;
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.JPanel;
public class one extends JFrame implements ActionListener{
JButton yellowBtn;
JButton redBtn;
JPanel p1; // 색이 바뀌는Panel
JPanel p2; // 버튼이 들어가는 Panel
//생성자
public one(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setTitle(title);
ButtonAction();
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
one c = new one("버튼 액션 이벤트 처리");
}
void ButtonAction() {
yellowBtn = new JButton("노랑");
redBtn = new JButton("빨강");
p1 = new JPanel();
p2 = new JPanel();
p2.setLayout(new GridLayout(0, 2));
p2.add(yellowBtn);
p2.add(redBtn);
add(p1, BorderLayout.CENTER);
add(p2, BorderLayout.SOUTH);
yellowBtn.addActionListener(this);
redBtn.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String btnStr = e.getActionCommand();
if(btnStr.equals("노랑")) {
p1.setBackground(Color.YELLOW);
}else {
p1.setBackground(Color.RED);
}
}
}
2. 다음 조건을 만족하며 클래스 JFrame을 상속받는 클래스를 구현하여 테스트하는 프로그램을 작성하시오.
- 버튼을 다음과 같이 5개로 구성
- 색상을 지정하면 윈도우 제목에 색상이 표시
- [pentagon] 버튼을 누르면 지정한 색상으로 오각형을 그리기
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.Polygon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
public class Two extends JFrame implements ActionListener{
Panel btnPanel; //버튼이 들어가는 panel
int x[] = {130, 180, 230, 205, 155};
int y[] = {180, 140, 180, 230, 230};
Button pentagonBtn;
Button redBtn;
Button yellowBtn;
Button blueBtn;
Button blackBtn;
Color color;
//생성자
public Two(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 300);
setVisible(true);
drawPentagon();
}
public void drawPentagon() {
btnPanel = new Panel();
pentagonBtn = new Button("pentagon");
redBtn = new Button("red");
yellowBtn = new Button("yellow");
blueBtn = new Button("blue");
blackBtn = new Button("black");
color = Color.black;
btnPanel.setLayout(new FlowLayout());
btnPanel.add(pentagonBtn);
btnPanel.add(redBtn);
btnPanel.add(yellowBtn);
btnPanel.add(blueBtn);
btnPanel.add(blackBtn);
add(btnPanel, BorderLayout.NORTH);
//버튼에 액선 리스너 추가
pentagonBtn.addActionListener(this);
redBtn.addActionListener(this);
yellowBtn.addActionListener(this);
blueBtn.addActionListener(this);
blackBtn.addActionListener(this);
}
public void paint(Graphics g) {
g.setColor(color);
g.fillPolygon(new Polygon(x, y, 5));
}
public static void main(String[]args) {
Two t = new Two("문제 2번");
}
public void actionPerformed(ActionEvent e) {
String strBtn = e.getActionCommand();
if(strBtn.equals("pentagon")) {
repaint();
}else {
setTitle(strBtn);
switch(strBtn) {
case "red" :
color = Color.red;
break;
case "yellow" :
color = Color.yellow;
break;
case "blue" :
color = Color.blue;
break;
case "black" :
color = Color.black;
break;
default :
break;
}
}
}
}
3. 마우스 이벤트를 처리하여 다음 조건을 만족하는 윈도우를 구현하여 테스트하는 프로그램을 작성하시오.
- 마우스를 누른 지점에서 드래그 후 놓은 지점까지 직선을 그리기
- 현재의 윈도우에서는 이전에 그린 직선도 계속 보이도록 구현
- 윈도우 내부에서 MouseAdapter를 상속받는 클래스를 구현하여 이벤트 처리
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
public class Three extends JFrame {
Point p1 = new Point(0,0); // 시작점
Point p2 = new Point(0,0);; // 끝점
public Three(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 200);
setTitle(title);
addMouseListener(new Mouse()); // 모션리스너 등록
setVisible(true);
}
@Override
public void paint(Graphics g) {
g.setColor(Color.magenta);
g.drawLine(p1.x, p1.y, p2.x, p2.y);
}
@Override
public void update(Graphics g) {
paint(g);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Three c = new Three("마우스를 누르고 이동한 후 놓아 보세요.");
}
class Point{ // int값 x, y를 가지는 클래스
int x;
int y ;
Point(int x, int y){
this.x = x;
this.y = y;
}
}
class Mouse extends MouseAdapter{
public void mousePressed(MouseEvent e) { // 드래그 시작
p1 = new Point(e.getX(),e.getY()); // 시작 점 저장
}
public void mouseReleased(MouseEvent e) { // 드래그 끝
p2 = new Point(e.getX(),e.getY()); // 끝 점 저장
repaint();
}
}
}
4. 마우스 이벤트를 처리하여 다음 조건을 만족하는 윈도우를 구현하여 테스트하는 프로그램을 작성하시오.
- 처음 실행 화면
- 마우스를 누르면 윈도우 제목에 시작점 : (x좌표, y좌표)가 표시
- 마우스를 드래그하면 계속 중간점 : (x좌표, y좌표)이 표시되면서 직선이 그려짐
- 마우스를 놓으면 끝점 : (x좌표, y좌표)이 표시되면서 직선이 그려짐
- 마우스를 누르면 이전 직선은 없어지고 새로운 직선이 그려지도록 구현
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.event.MouseInputListener;
public class Four extends JFrame implements MouseInputListener{
private static final long serialVersionUID = 1L;
Point p1 = new Point(0,0); // 시작점
Point p2 = new Point(0,0);; // 끝점
public Four(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 200);
setTitle(title);
addMouseMotionListener(this); // 모션리스너 등록
addMouseListener(this);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Four c = new Four("마우스를 누르고 이동한 후 놓아 보세요.");
}
class Point{ // int값 x, y를 가지는 클래스
int x;
int y ;
Point(int x, int y){
this.x = x;
this.y = y;
}
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.magenta);
g.drawLine(p1.x, p1.y, p2.x, p2.y);
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
getGraphics().clearRect(0, 0, 500, 200); // 화면 초기화
p1 = new Point(e.getX(),e.getY()); // 시작 점 저장
setTitle("시작점 : ("+e.getX()+", "+e.getY()+")");
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
setTitle("끝점 : ("+e.getX()+", "+e.getY()+")");
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
setTitle("중간점 : ("+e.getX()+", "+e.getY()+")");
p2 = new Point(e.getX(),e.getY()); // 중간 점 저장
repaint();
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
}
5. 마우스 이벤트를 처리하여 다음 조건을 만족하는 윈도우를 구현하여 테스트하는 프로그램을 작성하시오.
- 처음 실행 화면 : No Mouse Event 표시
- 마우스가 윈도우에 들어오면 윈도우 색상이 청록색(Cyan)으로 수정
- 마우스가 윈도우 밖으로 나가면 윈도우 색상이 노란색으로 수정
- 마우스를 누르면 : MousePressed(x좌표, y좌표)가 표시
- 마우스를 드래그하면 : MouseDragged(x좌표, y좌표)가 표시
- 마우스를 놓으면 : MouseReleased(x좌표, y좌표)가 표시
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.event.MouseInputListener;
public class Five extends JFrame implements MouseInputListener{
JLabel label;
public Five(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 200);
setTitle(title);
addMouseMotionListener(this); // 모션리스너 등록
addMouseListener(this);
label = new JLabel("No Mouse Event");
label.setHorizontalAlignment(SwingConstants.CENTER);
add(label, BorderLayout.NORTH);
addMouseListener(this);
addMouseMotionListener(this);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Five c = new Five("MouseListener와 MouseMotionListener 예제");
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
getContentPane().setBackground(Color.CYAN);
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
getContentPane().setBackground(Color.YELLOW);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
label.setText("mousePressed ("+e.getX()+","+e.getY()+")");
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
label.setText("mouseReleased ("+e.getX()+","+e.getY()+")");
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
label.setText("mouseDragged ("+e.getX()+","+e.getY()+")");
}
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
6. 마우스 이벤트를 처리하며 다음 조건을 만족하는 윈도우를 구현하여 테스트하는 프로그램을 작성하시오.
- 마우스를 누르고 드래그하면 드래그하는 부분에 "*"가 출력
* g.drawString("*", x, y);
- 다음과 같이 드래그하는 부분이 출력
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
public class Six extends JFrame implements MouseMotionListener{
private static final long serialVersionUID = 1L;
Point p = new Point(0,0); //
public Six(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 200);
setTitle(title);
addMouseMotionListener(this);
setVisible(true);
}
@Override
public void paint(Graphics g) {
g.drawString("*", p.x, p.y);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Six c = new Six("마우스를 누르고 글씨를 써 보세요.");
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
p = new Point(e.getX(), e.getY());
repaint();
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
class Point{ // int값 x, y를 가지는 클래스
int x;
int y ;
Point(int x, int y){
this.x = x;
this.y = y;
}
}
}
7. 다음 조건을 만족하며 클래스 JFrame을 상속받는 클래스를 구현하여 테스트하는 프로그램을 작성하시오.
- 메뉴를 다음과 같이 구성
- JMenuItem인 색상을 선택하면 윈도우의 바탕이 선택한 색상으로 수정
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.AbstractButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Seven extends JFrame implements ActionListener{
public Seven(String title) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 200);
setTitle(title);
settingMenu();
setVisible(true);
}
public void settingMenu() {
JMenu mainMenu = new JMenu("주메뉴");
JMenu subMenu = new JMenu("바탕색상");
JMenuItem yellowItem = new JMenuItem("노랑");
yellowItem.addActionListener(this);
JMenuItem redItem = new JMenuItem("빨강");
redItem.addActionListener(this);
JMenuItem grayItem =new JMenuItem("회색");
grayItem.addActionListener(this);
subMenu.add(yellowItem);
subMenu.add(redItem);
subMenu.add(grayItem);
mainMenu.add(subMenu);
JMenuBar menubar = new JMenuBar();
menubar.add(mainMenu);
setJMenuBar(menubar);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Seven c = new Seven("메뉴처리");
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String str = e.getActionCommand();
switch (str) {
case "노랑":
getContentPane().setBackground(Color.yellow);
break;
case "빨강":
getContentPane().setBackground(Color.red);
break;
case "회색":
getContentPane().setBackground(Color.gray);
break;
default:
break;
}
}
}
'개발 > Java' 카테고리의 다른 글
스프링(Spring)이란? (0) | 2022.08.21 |
---|---|
[IntelliJ] IntelliJ 다운로드 및 설치 방법 (0) | 2022.08.17 |
자바(JAVA) 버전 확인하는 3가지 방법 (0) | 2022.08.17 |
자바(JAVA) 설치 및 자바(JAVA) 버젼 확인 방법 (0) | 2022.08.17 |
절대JAVA Chapter11 입출력과 네트워크, 프로그래밍 연습 (0) | 2022.04.15 |