2011-01-31 1 views

답변

7

Check this post. 그것은 꽤 서투른 일이지만 작동합니다.

+0

덕분에, 유일한 문제는 - 앞으로의 모든 JFileChooser 인스턴스도 번역 될 것입니다. 그러나 제 인스턴스에 대해서만 원합니다. – VextoR

+0

정말로 링크가 죽은 경우 해당 게시물의 관련 부분 –

1

JFileChooser 텍스트 만 번역해야하는 경우 JFileChooser 내부로 해킹하는 대신 JFileChooser 로케일 (JFileChooser#setLocale(Locale))을 변경하는 것이 좋습니다. 실제로 모든 JFileChooser 텍스트는 로케일에 따라 다릅니다. 결과적으로 로캘을 원하는 언어로 변경하면 이러한 텍스트가 변경되지 않습니다.

2

Java의 Swing 구성 요소는 국제화를 완전히 이해할 수 있습니다. This article은 세부 사항을 설명하고이를 수행 할 수있는 방법의 예를 보여줍니다.

1
UIManager.put("FileChooser.fileNameLabelText", "FileName"); 
UIManager.put("FileChooser.filesOfTypeLabelText", "TypeFiles"); 
0

일반적으로은 Riduidel이 말한 것처럼 작동합니다. Mac OSX에서는 이것이 무시됩니다.

Mac OSX에서 기본 로케일을 올바르게 설정하려면 UIManager.getLookAndFeelDefaults().setDefaultLocale(Locale); 이것은 Java 8에서만 작동하며 Java 7에서는 작동하지 않습니다!

다른 모든 룩앤필에 대해 UIManager.getDefaults().setDefaultLocale(Locale); 을 Aqua 룩앤필에 사용하더라도 이것이 작동하지 않는 것처럼 보입니다. 그것은 메서드에서 protected void installStrings(JFileChooser paramJFileChooser)처럼 보입니다. UIManager.getString()에 대한 호출은 로케일을 사용하지 않지만 다른 installStrings() 메소드 (예 : BasicFileChooserUI, )는 protected void installStrings(JFileChooser) 메소드에서 로켈을 사용합니다.

아쿠아 : UIManager.getString("FileChooser.cancelButtonText");

기본은 : UIManager.getString("FileChooser.cancelButtonText",l);

fileChooser.setLocale(Locale); 여전히하지만 OSX에 무시됩니다.

1

showDialog()은 사용자 정의 대화 상자 (예 : 열기 또는 저장 대화 상자 제외)를 표시하는 데 사용됩니다. [승인] 버튼의 텍스트를 지정하는 매개 변수가 있습니다. 제목이 setDialogTitle() 메소드로 설정되지 않은 경우, 구현은 Windows OS에서 승인 버튼의 텍스트를 제목으로 사용하도록 임의로 선택하지만, 여기에는 문서화되어 있지 않으므로 작업에 의존해서는 안됩니다.

맞춤 제목을 원하면 setDialogTitle()을 사용하십시오. 맞춤 승인 버튼 텍스트를 원하면 setApproveButtonText()을 사용하십시오. 분명히 showDialog()은 승인 버튼의 텍스트를 사용합니다.이 경우 이전에 setApproveButtonText()에 전화 할 필요가 없습니다.

열기 대화 상자가 필요하면 showOpenDialog() 메서드를 사용하십시오. 저장 대화 상자가 필요하면 showSaveDialog()을 사용하십시오. 사용자 정의 대화 상자가 필요한 경우에만 showDialog()을 사용하십시오.

0

이 답변은 Fasimba/Icewalker가 게시 한 the DevX Java forum의 수정 된 버전입니다. 나는 검색을 수정하고 매개 변수를 바꾸는 것만으로 대답을 인용했다. I 은 표현 된 논리에 대해 공로를 인정하지 않습니다.

public void changeButtonText (Component c, String original, String change) { 

    if (c instanceof JButton) { 
     JButton b = (JButton) c; 
     if (b.getText() != null && b.getText().equalsIgnoreCase(original)) 
      b.setText(change); 
    } else if (c instanceof Container) { 
     Container cont = (Container) c; 
     for (int i = 0; i < cont.getComponents().length; i++) { 
      changeButtonText (cont.getComponent(i), original, change); 
     } 
    } 
} 

전화는 다음과 같이 :


  1. 는 23/06/2004에 the DevX Java forum에 배치, 오전 8시 6분