수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

JMenu 에서 JMenuItem을 삭제한 후 화면갱신이 안되는문제

소

2025.02.26

문제증상은 그림과 같습니다.
소스코드를 어떻게 수정하면 문제를 해결할수 있을까요??
고수님들의 답변 부탁드립니다...ㅜ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();
}

}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 모은 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();

번호 제 목 글쓴이 날짜
2704465 C질문 다시 애기 2025-08-10
2704437 출근후 파폭을 6.0으로 업뎃할거냐는 메세지가 나오길래... (3) 마호 2025-08-10
2704383 max-width , min-width, width 세 녀석 관련 질문드립니다. (1) 다와 2025-08-09
2704356 이번 과제로 성적관리 프로그램을 작성해야 하는데... (3) 칸나 2025-08-09
2704305 캐릭터 방향 전환에 대해서 질문합니다. (4) 우수리 2025-08-09
2704276 센터정렬 사이트에서의 정렬문제 (3) 새론 2025-08-08
2704219 충돌감지에 대한 질문입니다. (액션 3.0) (1) 화이티 2025-08-08
2704192 hover 이미지 적용시에..IE에서는 hover 후 원래대로 돌아가지를 않습니다. (2) 민아 2025-08-08
2704135 레이어있는 문서가 뒤로가기버튼 누르면 레이어가 안생깁니다. (4) 개구리 2025-08-07
2704113 왕초보 질문합니다. (3) 민들레 2025-08-07
2704084 스타일시트를 찾을 수 없다고 나오면서 테마 설치가 안되네요 ;; 다힘 2025-08-07
2704026 혼자서 코딩하구있어요 select박스질문입니닷! (4) 콩알눈 2025-08-06
2704000 button value="" 값 css로 수정관련 (2) 꼬붕 2025-08-06
2703971 접근성에 맞는dtd선언하기 (2) 하루 2025-08-06
2703917 div코딩 어느 해상도에서도 중앙정렬문의!!ㅠㅠ 해긴 2025-08-05
2703887 미치겠습니다. 테마 등록, 강남맨 2025-08-05
2703862 아바다 테마 사용도중 질문 드려요~! 모은 2025-08-05
2703831 자바에서 애프릿이랑 어플리케이션 같이쓸때 창 닫는법 (1) 소리 2025-08-04
2703806 (MFC) 현재 선택된 콤보박스 값을 EDIT박스에 어떻게 넣을까요;; 빵돌 2025-08-04
2703752 K-WAH4.4 웹접근성 title페이지 제목 없음 이거 아시는분 계신가요? 갤2 2025-08-04
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com