java的swing学习

题目很简单了

定义菜单“编辑”,加入菜单项“字体”、“字号”和“颜色”;

“字体”菜单项又有下级菜单项”宋体”,”仿宋”,”黑体”,”方正舒体”,”隶书”,”华文行楷”;

“字号”菜单项又有下级菜单项”14″,”18″,”24″,”28″,”36″,”48″

“颜色”菜单项又有下级菜单项“红”、“蓝”、“绿”。

点击菜单项,可以完成字体的设置。

主要使用swing组件来完成 swing比AWT强大的多 呵呵 方法更复杂 关键的是java的菜单的事件监听部分 因为组件比较多 如果每个都去监听的话 那么当程序比较复杂时,需要一大串的if 语句来实现,程序代码较难阅读与维护。当然,如果处理的事件较少,这种方式比较简单。最好使用一般的命名内部类,利用一般内部类来监听每个事件源产生的事件,避免代码过于混乱 详细请看这里– java swing的三种事件处理

还有关于JLabel如何设置字体背景色 见这里

见有人用java做了个记事本 可以自己试试 源代码在这

源代码如下:

[cce]
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class artur1 extends JFrame
{private Font font;//声明字体
private JLabel lbl;//声明标签
private JMenuBar mb ;//声明工具栏
private JMenu ziti,zihao,yanse;//声明菜单
private JMenuItem z1,z2,z3,z4,z5,z6,h1,h2,h3,h4,h5,h6,c1,c2,c3;//菜单选项
private String fontname="宋体";//font名字
private int fontsize=18;//字体大小

public artur1()
{
super("edit");//调用父类的构造函数

Container c=getContentPane();//获取Container组件
mb= new JMenuBar();//声明菜单栏

ziti= new JMenu("字体");//声明菜单
zihao=new JMenu("字号");
yanse=new JMenu("颜色");

z1=new JMenuItem("宋体");//菜单项
z2=new JMenuItem("仿宋");
z3=new JMenuItem("黑体");
z4=new JMenuItem("方正舒体");
z5=new JMenuItem("隶书");
z6=new JMenuItem("华文行楷");

h1=new JMenuItem("14");
h2=new JMenuItem("18");
h3=new JMenuItem("24");
h4=new JMenuItem("28");
h5=new JMenuItem("36");
h6=new JMenuItem("48");

c1=new JMenuItem("red");
c2=new JMenuItem("green");
c3=new JMenuItem("blue");

z1.addActionListener(new Handler1());//注册利用一般的内部类事件监听
z2.addActionListener(new Handler1());
z3.addActionListener(new Handler1());
z4.addActionListener(new Handler1());
z5.addActionListener(new Handler1());
z6.addActionListener(new Handler1());
h1.addActionListener(new Handler1());
h2.addActionListener(new Handler1());
h3.addActionListener(new Handler1());
h4.addActionListener(new Handler1());
h5.addActionListener(new Handler1());
h6.addActionListener(new Handler1());
c1.addActionListener(new Handler1());
c2.addActionListener(new Handler1());
c3.addActionListener(new Handler1());

mb.add(ziti);//添加组件
mb.add(zihao);
mb.add(yanse);

ziti.add(z1);
ziti.add(z2);
ziti.add(z3);
ziti.add(z4);
ziti.add(z5);
ziti.add(z6);

zihao.add(h1);
zihao.add(h2);
zihao.add(h3);
zihao.add(h4);
zihao.add(h5);
zihao.add(h6);

yanse.add(c1);
yanse.add(c2);
yanse.add(c3);

setJMenuBar(mb);//设置菜单栏
lbl=new JLabel("test example");//声明标签
add(lbl,BorderLayout.CENTER);
setLocation(240,320);
setSize(240,320);
setVisible(true);
}
public static void main(String arg[])
{artur1 artur=new artur1();

artur.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e)
{System.exit(0);} });//窗口关闭
}
class Handler1 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{    JMenuItem mi=(JMenuItem) e.getSource();
if(mi==z1)
fontname=z1.getText();//获取字体类型
if(mi==z2)
fontname=z2.getText();
if(mi==z3)
fontname=z3.getText();
if(mi==z4)
fontname=z4.getText();
if(mi==z5)
fontname=z5.getText();
if(mi==z6)
fontname=z6.getText();

if(mi==h1)
fontsize=Integer.parseInt(h1.getText());//获取字体大小
if(mi==h2)
fontsize=Integer.parseInt(h2.getText());
if(mi==h3)
fontsize=Integer.parseInt(h3.getText());
if(mi==h4)
fontsize=Integer.parseInt(h4.getText());
if(mi==h5)
fontsize=Integer.parseInt(h5.getText());
if(mi==h6)
fontsize=Integer.parseInt(h6.getText());

if(mi==c1)
lbl.setForeground(Color.red);//设置前景色
if(mi==c2)
lbl.setForeground(Color.green);
if(mi==c3)
lbl.setForeground(Color.blue);

font=new Font(fontname,Font.PLAIN,fontsize);//font类实例化
lbl.setFont(font);//设置字体
}
}
}
[/cce]

发表评论

电子邮件地址不会被公开。 必填项已用*标注