Java 如何在JPanel中拉绳
我有这个代码,它显示了系统的所有可用字体,但字体很多,所以我需要添加一个垂直滚动条。 我搜索并发现我可以制作一个JScrollPane并将其添加到框架中,但只能用于JPanel。 那么,如何将每个字体的字符串绘制到面板上呢。 很抱歉,我与您无关,但我是Java新手Java 如何在JPanel中拉绳,java,jpanel,Java,Jpanel,我有这个代码,它显示了系统的所有可用字体,但字体很多,所以我需要添加一个垂直滚动条。 我搜索并发现我可以制作一个JScrollPane并将其添加到框架中,但只能用于JPanel。 那么,如何将每个字体的字符串绘制到面板上呢。 很抱歉,我与您无关,但我是Java新手 public class FontList extends JPanel { static String[] families ; int[] styles = { Font.PLAIN, Font.ITALIC, Font
public class FontList extends JPanel {
static String[] families ;
int[] styles = { Font.PLAIN, Font.ITALIC, Font.BOLD,
Font.ITALIC + Font.BOLD };
String[] stylenames = { "Plain", "Italic", "Bold", "Bold Italic" };
public static void setFamilies(String[] names){
families = names;
}
@Override
public void paint(Graphics g) {
for (int f = 0; f < families.length; f++) { // for each family
for (int s = 0; s < styles.length; s++) { // for each style
Font font = new Font(families[f],styles[s],18); // create font
g.setFont(font); // set font
String name = families[f] + " " + stylenames[s]; // create name
g.drawString(name, 20, (f * 4 + s + 1) * 20); // display name
}
}
}
public static void main(String[] args)
{
String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getAvailableFontFamilyNames();
JFrame f = new JFrame();
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setFamilies(fontNames);
f.add(new FontList());
f.setSize(300,300);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
public类FontList扩展了JPanel{
静态字符串[]族;
int[]样式={Font.PLAIN、Font.ITALIC、Font.BOLD、,
Font.ITALIC+Font.BOLD};
String[]StyleName={“普通”、“斜体”、“粗体”、“粗体斜体”};
公共静态void集合族(字符串[]名称){
家庭=姓名;
}
@凌驾
公共空间涂料(图g){
对于(int f=0;f
- 不要使用
,使用油漆
李>油漆组件
- 在进行任何自定义绘制之前,调用正在使用的super
方法李>paint
- 对当前的
使用Font
确定大小李>FontMetrics
- 改用
lsJLabe
JScrollPane
,面板需要能够计算其首选大小,并通过getPreferredSize
方法返回该大小。这需要在部件喷漆之前完成
使用JLabel
s,它更简单