메뉴예제
(MenuTest.java)
import java.awt.*;
import java.awt.event.*;
public class MenuTest extends Frame implements ActionListener{
MenuBar mb;
Menu m_file, m_file2, m_file2_1;
MenuItem mi_load, mi_save, mi_close, mi_y, mi_g, mi_r, mi_b;
BorderLayout bl;
Label p;
public MenuTest(){
mb=new MenuBar(); //윈도우는 이미 일정영역이 메뉴바로 할당이 되어 있다
this.setMenuBar(mb); //컴포넌트를 붙이듯이 add 대신에 set으로 부착해준다.
//대메뉴
m_file=new Menu("파일");
mb.add(m_file);
m_file2=new Menu("색상");
mb.add(m_file2);
//1번 파일 세부메뉴
mi_load=new MenuItem("열기");
mi_save=new MenuItem("저장");
mi_close=new MenuItem("닫기");
m_file.add(mi_load);
m_file.add(mi_save);
m_file.addSeparator(); //구분선 넣기
m_file.add(mi_close);
mi_load.addActionListener(this);
mi_save.addActionListener(this);
mi_close.addActionListener(this);
//2번 파일 세부메뉴
mi_y=new MenuItem("노랑");
mi_g=new MenuItem("회색");
m_file2_1=new Menu("기타");
m_file2.add(mi_y);
m_file2.add(mi_g);
m_file2.addSeparator();
m_file2.add(m_file2_1);
mi_y.addActionListener(this);
mi_g.addActionListener(this);
//2-기타 세부메뉴
mi_r=new MenuItem("빨강");
mi_b=new MenuItem("파랑");
m_file2_1.add(mi_r);
m_file2_1.add(mi_b);
mi_r.addActionListener(this);
mi_b.addActionListener(this);
//내용영역
bl=new BorderLayout();
this.setLayout(bl);
this.setBackground(Color.green);
p=new Label("test");
this.add(p, "South");
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj=e.getSource();
if(obj==mi_load){
FileDialog fd=new FileDialog(this,"파일열기",FileDialog.LOAD);
fd.setVisible(true);
System.out.println(fd.getDirectory());
System.out.println(fd.getFile());
}else if(obj==mi_save){
FileDialog fd=new FileDialog(this,"파일저장",FileDialog.SAVE);
fd.setVisible(true);
}else if(obj==mi_close){
System.exit(0);
}else if(obj==mi_y){
this.setBackground(Color.yellow);
}else if(obj==mi_g){
this.setBackground(Color.gray);
}else if(obj==mi_r){
p.setBackground(Color.red);
}else if(obj==mi_b){
p.setBackground(Color.blue);
}
}
public static void main(String[] args) {
MenuTest mt=new MenuTest();
mt.setSize(300,300);
mt.setVisible(true);
}
}
팝업예제
(PopupTest.java)
import java.awt.*;
import java.awt.event.*;
public class PopupTest extends Frame implements MouseListener{
PopupMenu pm;
MenuItem mi_open,mi_close;
public PopupTest(){
pm=new PopupMenu();
mi_open=new MenuItem("파일열기");
mi_close=new MenuItem("종료하기");
pm.add(mi_open);
pm.add(mi_close);
this.add(pm);
this.addMouseListener(this);
}
public Insets insets() {
return new Insets(40,20,20,20);
}
public void mouseClicked(MouseEvent e) {
System.out.println(e);
int x=e.getX();
int y=e.getY();
int bt=e.getButton(); //마우스 버튼 정보는 int 형으로 저장이 된다. 저장후 비교를 통해 어떤 마우스 버튼으로 동작할지 제어한다.
System.out.println("x="+x+"/y+"+y);
if(bt==3){
pm.show(this, x, y); //마우스 위치에서 팝업창 띄우기
}
}
public void mouseEntered(MouseEvent e) {
this.setBackground(Color.blue);
}
public void mouseExited(MouseEvent e) {
this.setBackground(Color.white);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public static void main(String[] args) {
PopupTest p=new PopupTest();
p.setSize(300, 300);
p.setVisible(true);
}
}
그래픽예제
(GrapTest.java)
import java.awt.*;
import java.awt.event.*;
public class GrapTest extends Frame implements MouseMotionListener{
String str="안녕";
int x=100,y=100;
public GrapTest(){
this.addMouseMotionListener(this);
}
@Override
public void paint(Graphics g) {
g.setColor(Color.red);
g.drawString(str, x, y); //그래픽으로 문자를 띄운다.
}
@Override
public void update(Graphics g) {
g.setColor(Color.red);
g.drawString(str, x, y);
}
@Override
public void mouseDragged(MouseEvent e) {
x=e.getX();
y=e.getY();
repaint(); //paint 를 다시 호출함으로써 제대로 동작하도록한다.
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean inside(int x, int y) {
// TODO Auto-generated method stub
return super.inside(x, y);
}
public static void main(String[] args) {
GrapTest f=new GrapTest();
f.setSize(400,400);
f.setVisible(true);
}
}