2014-08-31 3 views
1

file chooser에 "새 폴더 만들기"버튼을 닫으려고했습니다. 파일 선택기에서 "새 폴더 만들기"버튼의 가시성을 설정할 수 있습니까? "look in"단어로 시작하는 첫 번째 구성 요소의 표시 여부를 설정할 수 있지만 모든 항목이 아닌 "새 폴더 작성"의 가시성 만 설정하고 싶습니다. 어떻게해야합니까?jfilechooser에서 "새 폴더 만들기"의 가시성을 닫는 방법

답변

2

두 가지 제안 :

당신은 작업을 기본 작업에 액세스하고 사용하지 않도록 설정하여 사용할 수있는 버튼을 만들 수 있습니다

Action folder = fileChooser.getActionMap().get("New Folder"); 
folder.setEnabled(false); 

또는 버튼을 액세스하고 버튼을 보이지 않게하기 위해 반사를 사용할 수 있습니다

//JButton button = SwingUtils.getDescendantOfType(
// JButton.class, fileChooser, "ToolTipText", "Create New Folder"); 
//button.setVisible(false); 

이 접근 방식의 경우 Swing Utils 클래스를 사용해야합니다. 내가 버튼을 닫습니다 아이콘 이름을 사용했다

import java.awt.*; 
import javax.swing.*; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     JFileChooser fileChooser = new JFileChooser(); 

     Action folder = fileChooser.getActionMap().get("New Folder"); 
     folder.setEnabled(false); 

     // Make the button invisible 

     //JButton button = SwingUtils.getDescendantOfType(
     // JButton.class, fileChooser, "ToolTipText", "Create New Folder"); 
     //button.setVisible(false); 

     fileChooser.showOpenDialog(null); 
    } 
} 
1

: 여기

는 두 가지 접근 방식을 보여주는 간단한 데모입니다. 내 구현은;

JFileChooser fileChooser = new JFileChooser(); 

// operations related with adjusting JFileChooser user interface 

closeButton(fileChooser, "FileChooser.newFolderIcon"); 
closeButton(fileChooser, "FileChooser.upFolderIcon"); 
에 호출 될 것입니다

주요 기능 단지 새로운 경우 - 당시 다른 문을 추가, 토글 버튼의 ​​사용자 인터페이스

void closeButton(JFileChooser fileChooser, String label){ 
    Icon icon = UIManager.getIcon(label); 
    closeButtonHelper(fileChooser.getComponents(), icon); 
} 

void closeButtonHelper(Component[] containers, Icon icon) { 
    for(Object iterator:containers){ 

     if(iterator instanceof JButton){ 

      Icon temp = icon.getIcon(); 

      if(temp != null && temp == icon){ 
       (JButton.class.cast(iterator)).setVisible(false); 
      } 

     } else 
     if(iterator instanceof Container){ 
      doVisibleHelper(Container.class.cast(iterator).getComponents(), icon); 
     } 
    } 
} 

의 버튼을 DIS는-표시 같은;

if(iterator instanceof JToggleButton){ 

    Icon temp = icon.getIcon(); 

    if(temp != null && temp == icon){ 
     (JToggleButton.class.cast(iterator)).setVisible(false); 
    } 

} else