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