0

我试图使用下面显示的代码使用 Java 构建记事本的字体窗口。但是,我在设置列表框中指定的文本大小时遇到​​了问题。

我正在尝试获取与所选项目的索引相对应的相应大小,但找不到任何此类方法。

f = new Frame("Font");
f.setLayout(new GridLayout(3, 3));
b1 = new Button("OK");
l1 = new Label("Font :");
l2 = new Label("Size :");
l3 = new Label("Font Style :");
lb1 = new List(10, false);
lb2 = new List(10, false);
lb3 = new List(5, false);
String [] s = {"Times New Roman", "Arial", "Verdana", "Trebuchet MS", "Papyrus","Monotype Corsiva","Microsoft Sans Serif", "Courier", "Courier New"};
for(int i = 0; i < s.length; i++)
{
    lb1.add(s[i]);
}
for(int i = 8; i <=72; i += 2)
{
    lb2.add(i + "");
}
String [] s1 = {"BOLD", "ITALIC", "PLAIN"};
for(int i = 0; i < s1.length; i++)
{
    lb3.add(s1[i]);
}   

f.add(l1);
f.add(l2);
f.add(l3);
f.add(lb1);
f.add(lb2);
f.add(lb3);
f.add(b1);
b1.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent ae)
    {
        if(lb3.isIndexSelected(0))
            fo = new Font(lb1.getSelectedItem(), Font.BOLD, **lb2.getSelectedIndex**());
        else if(lb3.isIndexSelected(1))
            fo = new Font(lb1.getSelectedItem(), Font.ITALIC, lb2.getSelectedIndex());
        else
            fo = new Font(lb1.getSelectedItem(), Font.PLAIN, lb2.getSelectedIndex());
        ta1.setFont(fo);
        MyFrame15.f.dispose(); 
    }
});
f.setSize(300, 300);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (int)((d.getWidth() / 2) - 200);
int y = (int)((d.getHeight() / 2) - 200);
f.setLocation(x, y);
f.setVisible(true);
}
4

2 回答 2

1

要获得用户需要的大小,我们可以使用: lb2.getSelectedItem(); 它返回一个String,但Font构造函数的第三个参数需要一个整数。因此,我们使用Integer类的parseInt()方法将接收到的字符串转换为整数。代码如下:Font(lb1.getSelectedItem(), Font.粗体,整数.parseInt(lb2.getSelectedItem() ));

于 2013-10-17T18:09:46.800 回答
-1

我建议您为此使用 Swing。您可以从有关文本组件功能的 Swing 教程开始,该教程已经包含一个可以满足您需求的工作示例。

于 2013-10-10T19:13:42.467 回答