我有一个JList
JScrollPane
里面并将字体设置为 Tahoma
,普通,20,由于某种原因它仍然显示为非常小的文本,我不确定这是为什么?
为了这不是一段庞大的代码,我已经尽可能地精简了它 存储它的框架使用 GridBagLayout
ArrayUtil.ArrayToListModel
转换任何List<T>;
至ListMode<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
制作字体有多大或多小它永远不会改变默认值。
最佳答案
在 JList
中显示内容的方式不是由 JList
定义的但由 ListCellRenderer
定义分配给JList
,所以
showlist.setFont(new Font("Tahoma", Font.PLAIN, 20));
对JList
内显示的内容没有影响
看看Writing a Custom Cell Renderer了解更多详情
举个例子...
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;
}
}
}
关于java - Swing 未显示正确的字体集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25656452/