JMenu 에서 JMenuItem을 삭제한 후 화면갱신이 안되는문제
소
문제증상은 그림과 같습니다.
소스코드를 어떻게 수정하면 문제를 해결할수 있을까요??
고수님들의 답변 부탁드립니다...ㅜimport java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
class MenuPopup_test extends JFrame implements MouseListener
{
JMenu file = new JMenu(파일);
JMenuItem test1 = new JMenuItem(속성1); // 제거될 가능성이 있는 컴포넌트
JMenuItem test2 = new JMenuItem(속성2); // 제거될 가능성이 있는 컴포넌트
JPopupMenu pop = new JPopupMenu();
JMenuItem del = new JMenuItem(삭제);
JMenuItem temp;
public MenuPopup_test(){
this.setVisible(true);
this.setSize(500,300);
// 메뉴설정
JMenuBar jmb = new JMenuBar();
this.setJMenuBar(jmb);
jmb.add(file);
file.add(test1);
file.add(test2);
//팝업설정
pop.add(del);
test1.addMouseListener(this);
test2.addMouseListener(this);
del.addMouseListener(this);
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e){
if(e.getSource()==del){
file.remove(temp);
file.updateUI();
//file.fireMenuSelected();
}
}
public void mouseReleased(MouseEvent e){
if(e.getSource()==test1 || e.getSource()==test2){
if(e.isPopupTrigger()){
file.setPopupMenuVisible(true);
pop.show((Component)e.getSource(), e.getX(), e.getY());
temp=(JMenuItem) e.getComponent();
}
}
}
public static void main(String[] args) {
new MenuPopup_test();
}
}
-
모은 2025-02-26
음..... 그런가요.. 며칠 잡아먹고있던건데 불가능한걸 가지고 삽질을 하고있었다니 _-;;; 다른방법으로 구현을 생각해봐야겠네요 애고....ㅠㅠ
답변 감사드려요.. -
참 2025-02-26
원래 메뉴라는게 아이템을 삭제하고 넣는 그런걸 하는 목적으로 만든게 아닌데요... 걍 disable 해서 이벤트를 못 먹게 하는게 보통이죠. 꼭 컴포넌트를 삭제해야한다면 그 컴포넌트가 있어야 할 곳은 메뉴가 아니라고 봐야 합니다.
-
종달 2025-02-26
네.. 저는 걍 제가 생각하는 UI 처리에 대한 생각으로는....
메뉴아이템이 사라지는것은 그리 좋은 생각이 아니라고 보입니다.
( 물론 간단한 테스트 등에서 사용해 보는것은 문제가 아니겠지만. )
메뉴아이템이 사라지면 매번 클릭하던 위치에 해당 메뉴 아이템이가 빠지게 되므로,
그 아래에 있는 메뉴아이템들이 위로 올라오게 됩니다.
그래서 메뉴아이템이 원래 있던곳 보다 위로 올라가게 되지요..
그래서 제 생각에는 메뉴아이템을 없애는것 보다는 disa -
벤자민 2025-02-26
제가 아는 범위에서 말씀드리면, swing에서 컨테이너내 컴포넌트를 동적으로 삭제할 경우, 다음과정이 필요합니다. 여기서, container는 삭제할 대상을 포함하고 있는 parent component 입니다.
정확한 답변은 아니니 참고만 하세요. (암튼, invalidate는 반드시 들어가야 할거에요)
container.invalidate();
container.validate();
container.repaint();
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2690365 | 고수님들~ IE6,7의 버그를 잘 잡기위한 튜토리얼이나 책 추천좀 부탁드려요! (1) | Schokolade | 2025-04-04 |
2690307 | 연사자중 &에 대해 질문합니다. | 미리별 | 2025-04-03 |
2690286 | 포커스메소드.. (3) | 집1어치워 | 2025-04-03 |
2690261 | label..? (10) | 차분 | 2025-04-03 |
2690232 | Contact form 7 에서 방문자가 한글파일을 첨부해서 보내면 파일명이 깨집니다. (1) | 무들 | 2025-04-03 |
2690207 | 질문~ 산수? 문제욧.ㅋ 다시질문이욧~ (5) | 가리매 | 2025-04-02 |
2690178 | 사진 게시판 질문입니다. (1) | 빛다 | 2025-04-02 |
2690144 | 글씨속성중 %요...? (3) | 클라우드 | 2025-04-02 |
2690116 | 비베.net 과 비베와 같나요?? | 흰여울 | 2025-04-02 |
2690088 | 퍼블리셔분들 문의드려요~! | 예그리나 | 2025-04-01 |
2690033 | 기초적인 비트연산자에 관한 문제.. (3) | 초시계 | 2025-04-01 |
2690006 | td에 class값에 대해.. (7) | 계획자 | 2025-04-01 |
2689979 | [초보질문] 제발 가르쳐 줘요..생 초보 한테는 답두 안해 주남여...흑 (8) | 간조롱 | 2025-03-31 |
2689952 | [질문] 다람쥐메일같은걸(IMAP되는) 직접 깔 수 있는 웹호스팅이 있을까요? | 힘차 | 2025-03-31 |
2689932 | 텍스트 세로정렬(?) 관련질문 | 우수리 | 2025-03-31 |
2689908 | 커스텀 테마 플러그인 추천 부탁드립니다~! | 풋내 | 2025-03-31 |
2689882 | 플래시 액션스크립터의 역활은 어디까지 일가요? (10) | 민트 | 2025-03-30 |
2689849 | iframe 표준에 맞게 넣는 방법 (3) | 타마 | 2025-03-30 |
2689824 | c++에서 string.. (6) | 슬옹 | 2025-03-30 |
2689791 | 애플릿뷰어를 실행하면 아무것도 안나오네요 (1) | 너에게 | 2025-03-30 |