관리 메뉴

취미개발 블로그와 마음수양

한글이 안 깨지는 PopupMenu -> JPopupMenu.. 본문

Language/샘플-핵심코드

한글이 안 깨지는 PopupMenu -> JPopupMenu..

아라한사 2014. 4. 30. 20:13

리눅스와 윈도우 환경에서 작업중인데 이상하게 ..

윈도우에서 환경이 깨져서..


한동안 엄청 알아봤다...으음..


핵심 소스는 결국 이렇다.


마우스 이벤트 MouseListener 로 붙여서 작업을 하면 된다.

클래스로 할 경우 MouseAdapter를 상속하더라...

조금 그냥 일반과는 다름.음.



package GUI연습실;

import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

public class 나의J팝업 extends JFrame implements MouseListener {
	JPopupMenu popup = new JPopupMenu();
	JMenuItem item1, item2;

	public 나의J팝업() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(400, 400);
		setTitle("제이팝업 테스트");
		setBackground(Color.blue);
		
		item1 = new JMenuItem("한글1");
		item2 = new JMenuItem("한글2");

		popup.add(item1);
		popup.addSeparator();
		popup.add(item2);

		/** 이부분이 일반 PopupMenu와는 좀 틀리다.  컨테이너에 마우리스너를 붙인다. */
		addMouseListener(this);
		setVisible(true);
	}

	public static void main(String[] args) {
		new 나의J팝업();
	}
	@Override
	public void mouseClicked(MouseEvent e) {
		checkPopup(e);
	}
	@Override
	public void mousePressed(MouseEvent e) {
		checkPopup(e);
	}
	@Override
	public void mouseReleased(MouseEvent e) {
		checkPopup(e);
	}

	private void checkPopup(MouseEvent e) {
		if (e.isPopupTrigger()) {
			popup.show(나의J팝업.this, e.getX(), e.getY());
		}
	}
	@Override
	public void mouseEntered(MouseEvent e) {
	}
	@Override
	public void mouseExited(MouseEvent e) {
	}
}