2012-03-10 2 views
0

JPopupMenu를 만들려고 할 때 또는 실제로 JPopupMenu를 없애려고 할 때 코드 라인이 있습니다. 나는 주위에 솔루션을 찾고 있었고 그들 모두는 컴포넌트 .setVisible (false) 또는 .setVisible (true)를 사용하고있다.Java JPopupMenu setVisible (false);

하지만 제 경우에는 내가 시도한 것을 mather에 사용할 수 없습니다. 전체적으로, 내 앱. 일하고 있고 System.out.println을 사용할 것이다 ("잘 동작 하는가?"); 그래서 문을 변경, 루프를 수행하고 ActionListener/ItemListener 그래서 작동 알고 있습니다. Basickly "CreateGUI"를 사용하여 메인 윈도우를 만들고 main ([String [] args)를 호출하고 프레임 클래스를 가지고 패널 & 칸을 배치하여 레이아웃을 제어합니다. 내 프레임에는 다른 것들이 있는데, JButton "vHent"가 있고 PopKalender()를 호출하면 JPOPupMenu가 화면에 표시됩니다. JPopupMenu "popUpKalenderWindow"에는 JButton이 "kill", "OK"(사용되지 않음) 및 MenuItem ("vMenu Tryk Her")이 있습니다.

제 아이디어는 MenuItems에서 읽은 일부 상태를 가져오고이 시점에서 JButton "kill"은 JPopupMenu를 종료하는 것입니다. 하지만 sayd는 아무것도 PopUpMenu를 종료하는 것 같습니다! 하지만 System.out.println()을 사용하여 검사 할 때 다른 모든 작업을 수행하면 Loops, Construktor 호출, Button/MenuItems 등이 작업 중이라는 것을 알 수 있습니다. . 나는 ActionPerformedListener 바로 아래에 popUpKalenderWindow.setVisible (false)를 넣으려고 시도했다. PopKalender (true/false)에서 true/false를 캐스팅하려고 시도하고 if-statement를 createt했다. 지금보십시오) 그리고 그것은 단지 아무 mather도 작동하지 않을 것입니다.

(Eclipse를 사용하므로 코드 라인이 바로 복사됩니다. 일부 의견은 덴마크어 (매우 유감입니다)이지만 필요로하는 곳의 라인은 영어로되어 있습니다. 예, CheckBox는 ArrayList에 있어야하고 for() {}로 끝나야합니다. 그래서 이것은 초보자 용 솔루션입니다! ).

아무도 나를 도울 수 있고 왜 "살인"버튼을 눌렀을 때 PopKalender()가 사라지지 않을지 말해 줄 수 있습니까 ??

//package components; 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Component; 
import java.awt.ComponentOrientation; 
import java.awt.Container; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 

import javax.swing.AbstractButton; 
import javax.swing.BorderFactory; 
import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JCheckBox; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JMenuItem; 
import javax.swing.JPanel; 
import javax.swing.JPopupMenu; 
import javax.swing.JTextField; 

public class Frame extends JPanel implements ItemListener, ActionListener { 
private static final long _1L = 1L; 
/** 
* 
*/ 

     // Klargør CheckBoxes 
     JCheckBox tal1; 
     JCheckBox tal2; 
     JCheckBox tal3; 
     JCheckBox tal4; 
     JCheckBox tal5; 
     JCheckBox tal6; 
     JCheckBox tal7; 
     JCheckBox tal8; 
     JCheckBox tal9; 
     JCheckBox tal10; 
     JCheckBox tal11; 
     JCheckBox tal12; 
     JCheckBox tal13; 
     JCheckBox tal14; 
     JCheckBox tal15; 
     JCheckBox tal16; 
     JCheckBox tal17; 
     JCheckBox tal18; 
     JCheckBox tal19; 
     JCheckBox tal20; 
     JCheckBox tal21; 
     JCheckBox tal22; 
     JCheckBox tal23; 
     JCheckBox tal24; 
     JCheckBox tal25; 
     JCheckBox tal26; 
     JCheckBox tal27; 
     JCheckBox tal28; 
     JCheckBox tal29; 
     JCheckBox tal30; 
     JCheckBox tal31; 
     JCheckBox tal32; 
     JCheckBox tal33; 
     JCheckBox tal34; 
     JCheckBox tal35; 
     JCheckBox tal36; 

     //Klargør ArrayList til valgte tal 
     ArrayList<Integer> valg = new ArrayList<Integer>(); 

     //Klargør knapper 
     JButton vOk; //til valgte tal Tekst: Tilføj 

     JButton vHent; //til at hente uge/kalender for valg af uge 
     JButton bRegn; //til at beregne ugen tal 

     //Klargør Tekster 
     JLabel labelValg = new JLabel("Du har valgt: "); //til valgte tal 
     JLabel labelTidNu = new JLabel("år-uge-dag-kl");  //til nuværende tid 
     JLabel labelValgTid = new JLabel("år-uge der skal skrives til"); //til valgte uge/år, der skal tilføjes Talvalg 
     JLabel labelUd_1 = new JLabel(" 1: ");  //til udlæsning af Talforslag LabelUd_1 - LabelUd_10 
     JLabel labelUd_2 = new JLabel(" 2: "); 
     JLabel labelUd_3 = new JLabel(" 3: "); 
     JLabel labelUd_4 = new JLabel(" 4: "); 
     JLabel labelUd_5 = new JLabel(" 5: "); 
     JLabel labelUd_6 = new JLabel(" 6: "); 
     JLabel labelUd_7 = new JLabel(" 7: "); 
     JLabel labelUd_8 = new JLabel(" 8: "); 
     JLabel labelUd_9 = new JLabel(" 9: "); 
     JLabel labelUd_10 = new JLabel("10: "); 



public Frame(){ 
    super(new BorderLayout()); 

    //Opret Paneler til under paneler 
    //Opret Top, left, center, right, buttom Panel 
    JPanel topPanel = new JPanel(); //Indsæt BorderLayout efter opstilling ! 
    JPanel leftPanel = new JPanel(); 
    JPanel centerPanel = new JPanel(); 
    JPanel rightPanel = new JPanel(); 
    JPanel bottomPanel = new JPanel(); 

    //Set internt Layout for top, left, right panel 
    topPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 
    leftPanel.setLayout(new GridLayout(4, 0)); 
    rightPanel.setLayout(new GridLayout(2, 0)); 

    //Set størrelse på paneler 
    topPanel.setPreferredSize(new Dimension(900, 50)); 
    leftPanel.setPreferredSize(new Dimension(300, 500)); 
    centerPanel.setPreferredSize(new Dimension(300, 500)); 
    rightPanel.setPreferredSize(new Dimension(300, 500)); 
    bottomPanel.setPreferredSize(new Dimension(900, 50)); 

    //tilføj paneler til frame'en og placer dem i layout'et 
    add(topPanel, BorderLayout.PAGE_START); 
    add(leftPanel, BorderLayout.LINE_START); 
    add(centerPanel, BorderLayout.CENTER); 
    add(rightPanel, BorderLayout.LINE_END); 
    add(bottomPanel, BorderLayout.PAGE_END); 


    //Opret Checkboxes 
    tal1 = new JCheckBox("1"); 
    tal2 = new JCheckBox("2"); 
    tal3 = new JCheckBox("3"); 
    tal4 = new JCheckBox("4"); 
    tal5 = new JCheckBox("5"); 
    tal6 = new JCheckBox("6"); 
    tal7 = new JCheckBox("7"); 
    tal8 = new JCheckBox("8"); 
    tal9 = new JCheckBox("9"); 
    tal10 = new JCheckBox("10"); 
    tal11 = new JCheckBox("11"); 
    tal12 = new JCheckBox("12"); 
    tal13 = new JCheckBox("13"); 
    tal14 = new JCheckBox("14"); 
    tal15 = new JCheckBox("15"); 
    tal16 = new JCheckBox("16"); 
    tal17 = new JCheckBox("17"); 
    tal18 = new JCheckBox("18"); 
    tal19 = new JCheckBox("19"); 
    tal20 = new JCheckBox("20"); 
    tal21 = new JCheckBox("21"); 
    tal22 = new JCheckBox("22"); 
    tal23 = new JCheckBox("23"); 
    tal24 = new JCheckBox("24"); 
    tal25 = new JCheckBox("25"); 
    tal26 = new JCheckBox("26"); 
    tal27 = new JCheckBox("27"); 
    tal28 = new JCheckBox("28"); 
    tal29 = new JCheckBox("29"); 
    tal30 = new JCheckBox("30"); 
    tal31 = new JCheckBox("31"); 
    tal32 = new JCheckBox("32"); 
    tal33 = new JCheckBox("33"); 
    tal34 = new JCheckBox("34"); 
    tal35 = new JCheckBox("35"); 
    tal36 = new JCheckBox("36"); 

    //Set default 
    tal1.setSelected(false); 
    tal2.setSelected(false); 
    tal3.setSelected(false); 
    tal4.setSelected(false); 
    tal5.setSelected(false); 
    tal6.setSelected(false); 
    tal7.setSelected(false); 
    tal8.setSelected(false); 
    tal9.setSelected(false); 
    tal10.setSelected(false); 
    tal11.setSelected(false); 
    tal12.setSelected(false); 
    tal13.setSelected(false); 
    tal14.setSelected(false); 
    tal15.setSelected(false); 
    tal16.setSelected(false); 
    tal17.setSelected(false); 
    tal18.setSelected(false); 
    tal19.setSelected(false); 
    tal20.setSelected(false); 
    tal21.setSelected(false); 
    tal22.setSelected(false); 
    tal23.setSelected(false); 
    tal24.setSelected(false); 
    tal25.setSelected(false); 
    tal26.setSelected(false); 
    tal27.setSelected(false); 
    tal28.setSelected(false); 
    tal29.setSelected(false); 
    tal30.setSelected(false); 
    tal31.setSelected(false); 
    tal32.setSelected(false); 
    tal33.setSelected(false); 
    tal34.setSelected(false); 
    tal35.setSelected(false); 
    tal36.setSelected(false); 

    //opret en ItemListener for Checkboxes 
    tal1.addItemListener(this); 
    tal2.addItemListener(this); 
    tal3.addItemListener(this); 
    tal4.addItemListener(this); 
    tal5.addItemListener(this); 
    tal6.addItemListener(this); 
    tal7.addItemListener(this); 
    tal8.addItemListener(this); 
    tal9.addItemListener(this); 
    tal10.addItemListener(this); 
    tal11.addItemListener(this); 
    tal12.addItemListener(this); 
    tal13.addItemListener(this); 
    tal14.addItemListener(this); 
    tal15.addItemListener(this); 
    tal16.addItemListener(this); 
    tal17.addItemListener(this); 
    tal18.addItemListener(this); 
    tal19.addItemListener(this); 
    tal20.addItemListener(this); 
    tal21.addItemListener(this); 
    tal22.addItemListener(this); 
    tal23.addItemListener(this); 
    tal24.addItemListener(this); 
    tal25.addItemListener(this); 
    tal26.addItemListener(this); 
    tal27.addItemListener(this); 
    tal28.addItemListener(this); 
    tal29.addItemListener(this); 
    tal30.addItemListener(this); 
    tal31.addItemListener(this); 
    tal32.addItemListener(this); 
    tal33.addItemListener(this); 
    tal34.addItemListener(this); 
    tal35.addItemListener(this); 
    tal36.addItemListener(this); 

    //Sæt CheckBoxes i 6 kolonner i et Panel 
    JPanel checkPanel = new JPanel(new GridLayout(0, 6)); 
    checkPanel.add(tal1); 
    checkPanel.add(tal2); 
    checkPanel.add(tal3); 
    checkPanel.add(tal4); 
    checkPanel.add(tal5); 
    checkPanel.add(tal5); 
    checkPanel.add(tal6); 
    checkPanel.add(tal7); 
    checkPanel.add(tal8); 
    checkPanel.add(tal9); 
    checkPanel.add(tal10); 
    checkPanel.add(tal11); 
    checkPanel.add(tal12); 
    checkPanel.add(tal13); 
    checkPanel.add(tal14); 
    checkPanel.add(tal15); 
    checkPanel.add(tal16); 
    checkPanel.add(tal17); 
    checkPanel.add(tal18); 
    checkPanel.add(tal19); 
    checkPanel.add(tal20); 
    checkPanel.add(tal21); 
    checkPanel.add(tal22); 
    checkPanel.add(tal23); 
    checkPanel.add(tal24); 
    checkPanel.add(tal25); 
    checkPanel.add(tal26); 
    checkPanel.add(tal27); 
    checkPanel.add(tal28); 
    checkPanel.add(tal29); 
    checkPanel.add(tal30); 
    checkPanel.add(tal31); 
    checkPanel.add(tal32); 
    checkPanel.add(tal33); 
    checkPanel.add(tal34); 
    checkPanel.add(tal35); 
    checkPanel.add(tal36); 

    //Set checkpanel størrelse og tilføj det til leftPanel med en ramme 
    checkPanel.setPreferredSize(new Dimension(290, 290)); 
    leftPanel.add(checkPanel); 
    setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); 

    //leftPanel med valgte tal 
    leftPanel.add(labelValg); 
    labelValg.setPreferredSize(new Dimension(290, 25)); 

    //Tilføj tekster 
    //topPanel m. nuværende tid  
    topPanel.add(labelTidNu); 
    labelTidNu.setPreferredSize(new Dimension(210, 25)); 
    //Hjælpe funktioner til ur 
    Thread t = new Kalender(labelTidNu); //Bruges til at lave en tråd Thread for Kalender 
    t.start();      //Tråden t startes og kan kontrolleres med Thread.sleep(1000) = pause 

    //klargør Knapper til: valgte tal 
    vOk = new JButton("Tilføj Tal"); 
    vOk.setPreferredSize(new Dimension(100, 50)); 
    vOk.setActionCommand("vOk"); //Set ActionCommand til genkendelse 
    vOk.addActionListener(this); //Tilføj en Action Listener 
    //hent uge/kalender 
    vHent = new JButton("Hent Uge"); 
    vHent.setActionCommand("vHent"); 
    vHent.addActionListener(this); 
    vHent.setPreferredSize(new Dimension(100, 50)); 
    //Beregn ugens tal 
    bRegn = new JButton("Beregn"); 
    bRegn.setActionCommand("bRegn"); 
    bRegn.addActionListener(this); 
    bRegn.setPreferredSize(new Dimension(100, 50)); 


    //Opret et knap Panel 
      JPanel knapPanel = new JPanel(); 
      knapPanel.setLayout(new BoxLayout(knapPanel, BoxLayout.Y_AXIS)); 
     // knapPanel.setPreferredSize(new Dimension(290, 300)); 

     //opret layoutpaneler med flowlayoutX til knapper og tekst 
      //layoutPanel1 
      JPanel layoutPanel1 = new JPanel(); 
      layoutPanel1.setLayout(new FlowLayout(FlowLayout.LEFT)); 
      layoutPanel1.setPreferredSize(new Dimension(290, 150)); 

      //layoutPanel2 
      JPanel layoutPanel2 = new JPanel(); 
      layoutPanel2.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
      layoutPanel2.setPreferredSize(new Dimension(290, 150)); 

      //Tilføj knapper/tekster 
      layoutPanel1.add(vHent); 
      layoutPanel1.add(labelValgTid); 
      layoutPanel2.add(vOk); 
      knapPanel.add(layoutPanel1); 
     // knapPanel.add(fillPanel1); 
      knapPanel.add(layoutPanel2); 
      leftPanel.add(knapPanel); 
      setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 

      //Opret panel til udlæsning 
      JPanel listePanel = new JPanel(); 
      listePanel.setLayout(new BoxLayout(listePanel, BoxLayout.Y_AXIS)); 
      listePanel.setPreferredSize(new Dimension(280, 300)); 

      //Opret Panel til Knap 
      JPanel knapPanel2 = new JPanel(); 
      knapPanel2.setPreferredSize(new Dimension(280, 150)); 
      knapPanel2.setLayout(new FlowLayout(FlowLayout.RIGHT)); 

      //Tilføj lister/knap 
      listePanel.add(labelUd_1); 
      listePanel.add(labelUd_2); 
      listePanel.add(labelUd_3); 
      listePanel.add(labelUd_4); 
      listePanel.add(labelUd_5); 
      listePanel.add(labelUd_6); 
      listePanel.add(labelUd_7); 
      listePanel.add(labelUd_8); 
      listePanel.add(labelUd_9); 
      listePanel.add(labelUd_10); 
      rightPanel.add(listePanel); 
      knapPanel2.add(bRegn); 
      rightPanel.add(knapPanel2); 


} //Frame end 

//Lyt til Checkboxes, send resultatet til Valgtjek og opdater display/LabelValg 
public void itemStateChanged(ItemEvent e){ 
    //  int index = 0; 
    Object kilde = e.getItemSelectable(); 
    if(kilde == tal1){ 
     Valgtjek(1); 
    }else if(kilde == tal2){ 
     Valgtjek(2);  
    }else if(kilde == tal3){ 
     Valgtjek(3); 
    }else if(kilde == tal4){ 
     Valgtjek(4);  
    }else if(kilde == tal5){ 
     Valgtjek(5);  
    }else if(kilde == tal6){ 
     Valgtjek(6);  
    }else if(kilde == tal7){ 
     Valgtjek(7);  
    }else if(kilde == tal8){ 
     Valgtjek(8);  
    }else if(kilde == tal9){ 
     Valgtjek(9);  
    }else if(kilde == tal10){ 
     Valgtjek(10); 
    }else if(kilde == tal11){ 
     Valgtjek(11); 
    }else if(kilde == tal12){ 
     Valgtjek(12); 
    }else if(kilde == tal13){ 
     Valgtjek(13); 
    }else if(kilde == tal14){ 
     Valgtjek(14); 
    }else if(kilde == tal15){ 
     Valgtjek(15); 
    }else if(kilde == tal16){ 
     Valgtjek(16); 
    }else if(kilde == tal17){ 
     Valgtjek(17); 
    }else if(kilde == tal18){ 
     Valgtjek(18); 
    }else if(kilde == tal19){ 
     Valgtjek(19); 
    }else if(kilde == tal20){ 
     Valgtjek(20); 
    }else if(kilde == tal21){ 
     Valgtjek(21); 
    }else if(kilde == tal22){ 
     Valgtjek(22); 
    }else if(kilde == tal23){ 
     Valgtjek(23); 
    }else if(kilde == tal24){ 
     Valgtjek(24); 
    }else if(kilde == tal25){ 
     Valgtjek(25); 
    }else if(kilde == tal26){ 
     Valgtjek(26); 
    }else if(kilde == tal27){ 
     Valgtjek(27); 
    }else if(kilde == tal28){ 
     Valgtjek(28); 
    }else if(kilde == tal29){ 
     Valgtjek(29); 
    }else if(kilde == tal30){ 
     Valgtjek(30); 
    }else if(kilde == tal31){ 
     Valgtjek(31); 
    }else if(kilde == tal32){ 
     Valgtjek(32); 
    }else if(kilde == tal33){ 
     Valgtjek(33); 
    }else if(kilde == tal34){ 
     Valgtjek(34); 
    }else if(kilde == tal35){ 
     Valgtjek(35); 
    }else if(kilde == tal36){ 
     Valgtjek(36); 
    } 

    //Opdater og udlæs valgte 
    String s = valg.toString(); 
    labelValg.setText("Du har valgt: " +s); 
    } 

//Lyt til Knapper //Button Listener 
public void actionPerformed(ActionEvent e){ 
    Object kilde = e.getActionCommand(); 
    if(kilde == "vOk"){ 

     System.out.println("Tillykke vOk er Ramt"); 
    }else{ 
     if(kilde == "vHent"){ 
      PopKalender(true);  //Call PopUpWindow 
      System.out.println("Tillykke vHent er ramt"); //This works and "PopKalender" shows on screen 
     }else { 
      if(kilde == "bRegn"){ 
       System.out.println("Tillykke der beregnes"); 
      } 
     else{ 
      if(kilde == "Kill"){ 
     PopKalender(false);     

       System.out.println("KILL WINDOW"); //This read out works fine, but "PopKalender" dosen't disappear 
      // System.exit(0); //Also work but NOT as intended !!! :D 

      } 
     } 
    } 
} } 

//Ur til topPanel 
//Der oprettes en klasse 
class Kalender extends Thread { 
    JLabel labelUrOpdater; 
    Kalender(JLabel labelTidNu){ 
     labelUrOpdater = labelTidNu;  
    } 

    //Opret variabler til nutid år, måned, dag i måned, uge, dag, timer, minutter, sek 
    int year; 
    int month; 
    String monthName; 
    int date; 
    int dayOfMonth; 
    int weekOfYear; 
    int dayOfWeek; 
    int hour; 
    int minute; 
    int second; 
    String[] måneder = {"Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" }; 

public void run() { 
Calendar ur = new GregorianCalendar(); 
for(;;){ 
    Date trialTime = new Date(); 
    ur.setTime(trialTime); 
     year = ur.get(Calendar.YEAR); 
     month = ur.get(Calendar.MONTH); 
     date = ur.get(Calendar.DATE); 
     dayOfMonth = ur.get(Calendar.DAY_OF_MONTH); 
     weekOfYear = ur.get(Calendar.WEEK_OF_YEAR); 
     dayOfWeek = ur.get(Calendar.DAY_OF_WEEK); 
     hour = ur.get(Calendar.HOUR_OF_DAY); 
     minute = ur.get(Calendar.MINUTE); 
     second = ur.get(Calendar.SECOND); 
     monthName = måneder[month]; 
     //Sæt 0 foran 0-9 i sekunder/minutter 
     if((minute <= 9) || (second <= 9)){ 
      if(minute <= 9){ 
       labelTidNu.setText(year + ". " + dayOfMonth + " " + monthName + " " + "Uge: " + weekOfYear + " " + "Kl: " + hour + ":" + "0" + minute + ":" + second); 

     }else{ 
      if(second <= 9){ 
      labelTidNu.setText(year + ". " + dayOfMonth + " " + monthName + " " + "Uge: " + weekOfYear + " " + "Kl: " + hour + ":" + minute + ":" + "0" + second); 
       } 

     } 
     } 
     else{   
      labelTidNu.setText(year + ". " + dayOfMonth + " " + monthName + " " + "Uge: " + weekOfYear + " " + "Kl: " + hour + ":" + minute + ":" + second); 
     // labelTidNu.repaint(); 
      } 
    try { Thread.sleep(1000); 
    } catch(InterruptedException e){ 
     System.out.println("Thread Error"); 
      } 
     } 
    } 

} 

    //Tal Checker: Se om de valgte tal er på listen, fjern eller tilføj. Call fra ItemStateChange 
public void Valgtjek(int tjek) { 
    boolean v = valg.contains(tjek); 
     if(v){ 
     int i = valg.indexOf(tjek); 
     valg.remove(i); 
     System.out.println("Fjernede"); 
    } 
    else{ 
     valg.add(tjek); 
     System.out.println("valgte :" + tjek); 
     } 
} 

//ActionListener for PopUpKalender "PopKalender"/ActionListener f. JPopupMenu 
class PopKalValg implements ActionListener{ 
    public void actionPerformed(ActionEvent actionEvent){ 
     System.out.println("Valgt" + actionEvent.getActionCommand()); 

    } 
} 


//Pop-up til kalender valg (Popup Menu for my Pick Calender 
public void PopKalender(boolean pState){ 
    boolean pTest = false; 

    JPopupMenu popUpKalenderWindow = new JPopupMenu(); 
// popUpKalenderWindow.setDefaultCloseOperation(); 
    popUpKalenderWindow.setPreferredSize(new Dimension(400, 400)); 
    popUpKalenderWindow.setLocation(700, 300); 

    ActionListener kalActionValg = new PopKalValg(); //ActionListener to objects inside the JPopupMenu 

    JPanel popPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); //Panel to hold objects and control layout 
    JButton dOk = new JButton("OK"); //Not in use, just show 

    JMenuItem vMenu = new JMenuItem("vMenu Tryk Her"); //test Item to learn JMenuItem 
    vMenu.addActionListener(kalActionValg); 
    popPanel.add(vMenu); 

    JButton kill = new JButton("kill");  //In Use, supposed to shut down JPopupMenu 
    kill.setActionCommand("Kill"); 
    kill.addActionListener(this); 
    popPanel.add(dOk); 
    popPanel.add(kill); 
    popUpKalenderWindow.add(popPanel); 
    if(pTest != pState){ 
    popUpKalenderWindow.setVisible(true); //works fine 
    pTest = true; 
    System.out.println(pTest); // works fine, state has changed 
    }else{ 
     //  getRootPane().setVisible(false); //Dosen't work 

    //  popPanel.setVisible(false); Dosen't Work 
     popUpKalenderWindow.setVisible(false);  // Dosen't work 
      System.out.println("Pop set visible false"); //Do work, so loop statement has been reached !!! 


    } 




} 


private static void createAndShowGUI(){ 
    //Create and set up window 
    JFrame frame = new JFrame("Mit Program"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Afslut Runtime ved vindue luk 
    frame.setPreferredSize(new Dimension(900, 600)); //Set størrelse på vinduet 

    /*  //Create background, put background in ContentPane place it Center 
    JLabel bckGnd = new JLabel(""); 
    frame.getContentPane().add(bckGnd, BorderLayout.CENTER); 
*/ 

    //Opret et Ground Panel til panels 
    JComponent groundPanel = new Frame(); 
    groundPanel.setOpaque(true);   //content Panes skal være opaque 
    frame.getContentPane().add(groundPanel);  //Tilføj GroundPanel til frame 

    //Display Window 
    frame.pack(); 
    frame.setVisible(true); 
} 


//SerialVersion ??? 
private static final long serialVersionUID = _1L; 

public static void main(String[] args) { 
    // Schedule a job for event-dispatching thread: 
    //Creating and showing this Application's GUI. 
    javax.swing.SwingUtilities.invokeLater(new Runnable(){  
     public void run(){ 
      createAndShowGUI();    
     } 
    }); 

} 

} 
+3

확실히 배열 및 기타 모음을 사용하여 배우고 루프를 사용해야합니다. –

+3

하나의 팝업을 보이지 않게 할 수 없다는 것을 보여주기 위해 실제로 36 개의 체크 박스가 필요합니까? –

+0

코드가 눈에 안좋은 데, 배열, 모음, 제네릭을 사용하는 방법을 포함하여 기본 자바를 배우기를 원할 것입니다. –

답변

1

솔직히 말해서 코드가 끔찍합니다. 어쨌든, kill 버튼을 작동시키는 가장 짧은 방법 중 하나는 ActionListener를 추가하고이 버튼에서 작업이 수행 될 때 어떤 일이 발생하는지 구현하는 것입니다.

kill.addActionListener(new ActionListener() 
{ 
    public void actionPerformed (ActionEvent e) 
    { 
     popUpKalenderWindow.setVisible(false); 
    } 
}); 

그리고는, 위의 코드를 작동하게하여 popUpKalenderWindowfinal로 표시하는 대신이 줄을 kill.addActionListener(this); 사용이의

.

final JPopupMenu popUpKalenderWindow = new JPopupMenu(); 
+0

deporter : 정말 고맙습니다. 이제 그것을 공부하고 앞으로 어떻게 사용할지 알아 내려고 노력하겠습니다! – RAJensen

관련 문제