2014-06-30 2 views
2

JList에서 JTextArea을 채우려고하면 사용자가 항목을 두 번 클릭합니다. 나는 이것이 어떻게 성취 할 수 있는지 완전히 확신하지 못한다. 내가 지금까지 가지고있는 것이 여기에있다.JList 항목을 두 번 클릭 할 때 JTextField 채우기

// Create Top Right JPanel and JList 
     String[] listB = { "Some content on the right panel", "More content", "Some more content", "More and more content", "More and more content", "More and more content", 
       "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", 
       "More and more content" }; 
     final JList listBottom = new JList(listB); 
     listBottom.setVisibleRowCount(12); 
     JScrollPane scrollPaneB = new JScrollPane(listBottom); 
     panelBottom.add(scrollPaneB); 
     scrollPaneB.setViewportView(listBottom); 
     scrollPaneB.setBorder(BorderFactory.createTitledBorder("Bottom Panel")); 
     scrollPaneB.setVisible(true); 
     //listBottom.setVisible(true); 
     listBottom.setBorder(BorderFactory.createLoweredBevelBorder()); 

     // Create Top Right Action Listener 
     listBottom.addListSelectionListener(new ListSelectionListener(){ 

      @Override 
      public void valueChanged(ListSelectionEvent arg0) { 
       Selection selectionB = (Selection)listBottom.getSelectedValue(); 

       textField.setText(selectionB.getContents()); 


      } 

     }); 
+0

Enter 키 기능을 어떻게 구현했는지 궁금합니다. – camickr

답변

4

단순히 mouseClicked 수신기를 추가하고 마우스가 JList를 클릭하는지 확인하십시오.

String[] listB = { "Some content on the right panel", "More content", "Some more content", "More and more content", "More and more content", "More and more content", 
      "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", 
      "More and more content" }; 


    final JList listBottom = new JList(listB); 
    ....//other code 
    listBottom.addMouseListener(new MouseAdapter(){ 

     //Called when you click the JList 
     public void mouseClicked(MouseEvent e) { 

      JList list = (JList)e.getSource(); 
      //Makes sure it only registers for single clicks(always registers even on double clicks, just registers twice.) 
      if (e.getClickCount() == 1) { 

       //Gets the point where you clicked and returns the index of the element at that point 
       int index = list.locationToIndex(e.getPoint()); 
       //Makes sure that where you clicked was an element and that it is a String(We know it will be but its better to be safe) 
       if(list.getModel().getElementAt(index) != null&&list.getModel().getElementAt(index) instanceof String){ 
        //Populates your textField with the element at this index 
        textField.setText(list.getModel().getElementAt(index)); 
       } 
      } 
     } 
    }); 

희망 하시겠습니까?

0

사용자가 항목을 두 번 클릭하면 JList에서 JTextArea를 채우려고합니다.

GUI를 디자인 할 때 사용자는 마우스 또는 키보드를 사용하여 구성 요소에서 작업을 호출 할 수 있어야합니다.

체크 아웃 List Action을 확인하십시오. double click 일 때 Action을 호출하거나 Enter 키를 사용합니다. Action을 작성하기 만하면됩니다.