2014-09-04 3 views
0

JScrollPane 안에 JList이 있고 글꼴을 Tahoma, 일반 20으로 설정했는데 어떤 이유로 그 문자가 여전히 매우 작은 텍스트로 표시되고 이것이 왜 존재하지 않는지 알고 싶습니다.스윙이 올바른 글꼴 세트를 표시하지 않습니다.

그냥 이것이 내가이 저장되는 프레임을 수있는 내가만큼 그것을 몸매는 여전 하구나 한 코드의 거대한 조각되지 않도록 GridBagLayout로

ArrayUtil.ArrayToListModelListMode<T>;

모든 List<T>; 변환 사용
JFrame frame = new JFrame(); 
frame.setBounds(100, 100, 450, 300); 
frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); 
GridBagLayout gridBagLayout = new GridBagLayout(); 
gridBagLayout.columnWidths = new int[]{0}; 
gridBagLayout.rowHeights = new int[]{0}; 
gridBagLayout.columnWeights = new double[]{1.0}; 
gridBagLayout.rowWeights = new double[]{1.0}; 
frame.getContentPane().setLayout(gridBagLayout); 

JScrollPane showlistScrollPane = new JScrollPane(); 
GridBagConstraints gbc_showlistScrollPane = new GridBagConstraints(); 
gbc_showlistScrollPane.insets = new Insets(0, 0, 0, 5); 
gbc_showlistScrollPane.fill = GridBagConstraints.BOTH; 
gbc_showlistScrollPane.gridx = 0; 
gbc_showlistScrollPane.gridy = 0; 
frame.getContentPane().add(showlistScrollPane, gbc_showlistScrollPane); 

ArrayList<String> randomData = new ArrayList<String>(); 
randomData.add("Random drhgiudrhgiudhri"); 
randomData.add("Data dsirhgodhroih"); 
ListModel<String> pagesList = ArrayUtil.ArrayToListModel(randomData); 

showlist = new JList<String>(pagesList); 
showlist.setFont(new Font("Tahoma", Font.PLAIN, 20)); 
showlistScrollPane.setViewportView(showlist); 

글꼴의 크기를 아무리 크거나 작게해도 showlist의 글꼴은 기본값에서 변경되지 않습니다.

답변

3

콘텐츠가 JList 의해 정의되지 않은 JList 내에 표시되어 있지만 JList에 할당 ListCellRenderer으로 정의하는 수단이므로

showlist.setFont(new Font("Tahoma", Font.PLAIN, 20)); 

JList 내에 표시 내용에 영향을 미치지 않을 것이다

...

0 자세한 내용은 예를 들어

에 대한 Writing a Custom Cell Renderer에서보세요

List of happy things

import java.awt.Component; 
import java.awt.EventQueue; 
import java.awt.Font; 
import javax.swing.DefaultListCellRenderer; 
import javax.swing.JFrame; 
import javax.swing.JList; 
import javax.swing.JScrollPane; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class Test1 { 

    public static void main(String[] args) { 
     new Test1(); 
    } 

    public Test1() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
        ex.printStackTrace(); 
       } 

       JList list = new JList(new String[]{"Happy list", "of happy things", "bunnies", "unicorns", "sharks"}); 
       list.setCellRenderer(new BigFontListCellRenderer()); 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new JScrollPane(list)); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class BigFontListCellRenderer extends DefaultListCellRenderer { 

     @Override 
     public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
      super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 
      setFont(new Font("Tahoma", Font.PLAIN, 20)); 
      return this; 
     } 

    } 

} 
+0

도 참조 [이 응답 (http://stackoverflow.com/a/6965149/418556) 그 목록 항목을 렌더링하기 위해 각각의 폰트를 사용하여, 폰트를 나열한다. –

+0

JList.setFont (새로운 폰트 ("Tahoma", Font.PLAIN, 20)); 제대로 반응해야합니다. – mKorbel

+0

감사합니다. 완벽하게 작동 했으므로 클래스에 아무 것도 수행하지 않는 메서드가 포함되어 있으면 문제가 발생합니다. – user3045798

관련 문제