目录
1.Panel/applet默认使用flowlayout.2
Frame/dialog/Scorllpane默认borderlayout.2
2.布局管理器..2
3.常用组件..6
4.事件..8
5.AWT菜单..14
1.顶层容器:jframe/japplet/jwindow..21
2.边框..26
3.Swing组件的键盘驱动..27
4.Action的jtoolbar的使用..28
6.进度条..56
8.Jtree.69
9.Jtable andJtablemodel77
10.使用jtextpane和jformattedtextfiled创建格式文本..88
AWT
1.Panel/applet默认使用flowlayout
Frame/dialog/Scorllpane默认borderlayout
2.布局管理器
Flowlayout:f.setLayout(new FlowLayout(FlowLayout.LEFT,20,5));//设置垂直间距和水平间距
Borderlayout:有东西南北中五个区域,可以设置水平和垂直距离,不是置则会覆盖
f.setLayout(new BorderLayout(30,5));//设置垂直间距和水平间距
f.add(newButton("东"),BorderLayout.EAST);
f.add(newButton("西"),BorderLayout.WEST);
f.add(newButton("南"),BorderLayout.SOUTH);
f.add(newButton("北"),BorderLayout.NORTH);
f.add(newButton("中"),BorderLayout.CENTER);
gridlayout:将容器划分成网格gridlayout(rows,cols,hgap,vgap)
gridbaglayout:与gridbagconstraints连用(不好控制的东西一般不太喜欢)
gbc.gridx/gridy设置所在网格位置的横向和纵向索引
gbc.gridwidth/height设置可以跨越多少个网格的大小
gbc.fill如何占据空白区域,有none,herizontal,vertical,both
gbc.ipadx/ipady设置内部填充的大小
gbc.insets设置外部填充的大小
gbc.anchor组件在显示区域的定位方式,九个方位
gbc.widthx/weighty占据多余的垂直或者水平空间
gbc.gridwidth=GridBagConstraints.REMAINDER;//所在行的最后一个组件
packagecom.zylg.www;
importjava.awt.Button;
importjava.awt.Frame;
importjava.awt.GridBagConstraints;
importjava.awt.GridBagLayout;
importjava.awt.event.WindowEvent;
importjava.awt.event.WindowListener;
publicclass find
{
public static void main(String[] args)
{
Frame f=new Frame();
GridBagLayout gb=newGridBagLayout();
GridBagConstraints gbc=newGridBagConstraints();
f.setLayout(gb);
f.setLocation(200, 200);
f.setSize(400, 400);
f.addWindowListener(newWindowListener()
{
@Override
public void windowClosed(WindowEvente)
{
// TODOAuto-generated method stub
}
@Override
public voidwindowOpened(WindowEvent e)
{
// TODOAuto-generated method stub
}
@Override
public voidwindowClosing(WindowEvent e)
{
System.exit(0);
}
@Override
public voidwindowIconified(WindowEvent e)
{
// TODOAuto-generated method stub
}
@Override
public voidwindowDeiconified(WindowEvent e)
{
// TODOAuto-generated method stub
}
@Override
public voidwindowActivated(WindowEvent e)
{
// TODOAuto-generated method stub
}
@Override
public voidwindowDeactivated(WindowEvent e)
{
// TODOAuto-generated method stub
}
});
f.setTitle("专业路过");
Button[] bt=new Button[10];
for(int i=0;i<10;i++){bt[i]=newButton("按钮"+i);}
gbc.fill=GridBagConstraints.NONE;//
gbc.weightx=1;
gbc.weighty=1;
gb.setConstraints(bt[0],gbc);f.add(bt[0]);
gb.setConstraints(bt[1], gbc);f.add(bt[1]);
gb.setConstraints(bt[2],gbc);f.add(bt[2]);
gbc.gridwidth=GridBagConstraints.REMAINDER;//所在行的最后一个组件
gb.setConstraints(bt[3],gbc);f.add(bt[3]);
gbc.weightx=1;
gbc.weighty=1;
gbc.gridx=0;
gb.setConstraints(bt[4], gbc);f.add(bt[4]);
gbc.gridwidth=0;
gb.setConstraints(bt[5],gbc);f.add(bt[5]);
gbc.gridwidth=GridBagConstraints.REMAINDER;
gb.setConstraints(bt[6],gbc);f.add(bt[6]);
gbc.gridwidth=1;
gbc.gridheight=2;
gbc.weighty=1;
gb.setConstraints(bt[7],gbc);f.add(bt[7]);
gbc.gridheight=1;
gbc.weighty=1;
gbc.gridwidth=GridBagConstraints.REMAINDER;
gb.setConstraints(bt[8],gbc);f.add(bt[8]);
gb.setConstraints(bt[9],gbc);f.add(bt[9]);
f.setVisible(true);
}
}
cardlayout(hgap,vgap)
first(Containertarget)显现容器第一张 last() previous() next() show(target,name)
packagecom.zylg.www;
importjava.awt.BorderLayout;
importjava.awt.Button;
importjava.awt.CardLayout;
importjava.awt.Frame;
importjava.awt.Panel;
importjava.awt.TextArea;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowEvent;
importjava.awt.event.WindowListener;
publicclass find
{
public static void main(String[] args)
{
Frame f=new Frame();
f.setLayout(newBorderLayout(0,0));
CardLayout c=new CardLayout();
Panel p1=new Panel(),p2=newPanel();
p1.setLayout(c);
Button[] bt=new Button[5];
f.setLocation(200, 200);
f.setSize(400, 400);
f.setTitle("专业路过");
for(int i=0;i<5;i++)
{
Panel p=new Panel();
p.add(new TextArea("专业路过"+i,30,90));
p1.add("专业路过"+i,p);
}
ActionListener listener=e->
{
switch(e.getActionCommand())
{
case "上一张":c.previous(p1);break;
case "下一张":c.next(p1);break;
case "第一张":c.first(p1);break;
case "最后一张":c.last(p1);break;
case "第三张":c.show(p1, "专业路过3");break;
}
};
bt[0]=new Button("上一张");bt[0].addActionListener(listener);p2.add(bt[0]);
bt[1]=new Button("下一张");bt[1].addActionListener(listener);p2.add(bt[1]);
bt[2]=new Button("最后一张");bt[2].addActionListener(listener);p2.add(bt[2]);
bt[3]=new Button("第一张");bt[3].addActionListener(listener);p2.add(bt[3]);
bt[4]=new Button("第三张");bt[4].addActionListener(listener);p2.add(bt[4]);
f.add(p1);
f.add(p2, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
}
Null绝对定位
Boxlayout比gridbaglayout简单一点的东西,水平或者垂直的排列,加上间距
f.setLayout(newBoxLayout(f, BoxLayout.Y_AXIS));
Box horizontal=Box.createHorizontalBox();
Box vertical=Box.createVerticalBox();
horizontal.add(Box.createHorizontalGlue());
horizontal.add(new Button("水平按钮1"));
horizontal.add(Box.createHorizontalGlue());
horizontal.add(new Button("水平按钮2"));
horizontal.add(Box.createHorizontalGlue());
horizontal.add(new Button("水平按钮3"));
horizontal.add(Box.createHorizontalGlue());
vertical.add(Box.createVerticalStrut(50));
vertical.add(new Button("垂直按钮1"));
vertical.add(Box.createVerticalStrut(50));
vertical.add(new Button("垂直按钮2"));
f.add(horizontal);
f.add(vertical, BorderLayout.SOUTH);
3.常用组件
基本组件button(按钮)、canvas(画布)、checkbox(复选框组件)、checkboxgtoup(将多个checkbox合成在一起)、choice(下拉式选择框组件)、frame(窗口)、label(标签)、list(列表框组件)、panel(容器)、scrollbar(滚动条组件)、textarea(文本域)、textfile(单行文本)
对话框dialog
Button ok=new Button("确认");
CheckboxGroup cbg=new CheckboxGroup();
Checkbox male=new Checkbox("男",cbg,true);
Checkbox famale=new Checkbox("女",cbg,false);
Checkbox married=new Checkbox("是否已婚?",false);
Choice colorchooser=new Choice();
List colorlist=new List(6,true);
TextArea ta=new TextArea(5,20);
TextField name=new TextField(40);
colorlist.add("红");
colorlist.add("绿");
colorlist.add("蓝");
colorchooser.add("红");
colorchooser.add("绿");
colorchooser.add("蓝");
Panel p1=new Panel(),p2=new Panel();
p1.add(name);p1.add(ok);f.add(p1,BorderLayout.SOUTH);
p2.add(colorchooser);p2.add(male);p2.add(famale);p2.add(married);
Box topleft=Box.createVerticalBox();
topleft.add(ta);topleft.add(p2);
Box top=Box.createHorizontalBox();
top.add(topleft);top.add(colorlist);
f.add(top);
对话框
Dialog d1=new Dialog(f,"模式对话框",true);
Dialog d2=new Dialog(f,"非模式对话框",false);
Button bt1=new Button("打开模式对话框");bt1.addActionListener(e->d1.setVisible(true));
Button bt2=new Button("打开非模式对话框");bt2.addActionListener(e->d2.setVisible(true));
4.事件
Componentevent组件事件
Containerevent容器事件
Focusevent焦点事件
Windowevent窗体事件
Keyevent键盘事件
Mouseevent键盘事件
Paintevent组件绘制事件
Actionevent动作事件
Adjustmentevent调节事件
Itemevent选项事件
Textevent文本框事件
package com.zylg.www;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.ContainerEvent;
import java.awt.event.ContainerListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.Box;
public class find
{
public static void main(String[] args)
{
Frame f=new Frame();
f.setLocation(200, 200);
f.setSize(400, 400);
f.setTitle("专业路过");
Panel p1=new Panel();
TextArea shuru=new TextArea(3,40);
Button ok=new Button("确定");
p1.add(shuru);p1.add(ok);
f.add(p1, BorderLayout.SOUTH);
Box top=Box.createHorizontalBox();
TextAreata1=new TextArea(20,25),ta2=new TextArea(20,25);
top.add(ta1);top.createHorizontalGlue();top.add(ta2);
top.createVerticalGlue();
f.add(top);
//事件的重新定义
ActionListener action=new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
ta2.append("按钮、文本框,菜单项被单击\n");
}
};
AdjustmentListener adjust=new AdjustmentListener()
{
@Override
public voidadjustmentValueChanged(AdjustmentEvent e)
{
ta2.append("滑块位置发生改变\n");
}
};
ContainerListener cont=new ContainerListener()
{
@Override
public void componentRemoved(ContainerEvent e)
{
ta2.append("从容器中移除了组件\n");
}
@Override
public void componentAdded(ContainerEvent e)
{
ta2.append("从容器中添加了组件\n");
}
};
FocusListener focus=new FocusListener()
{
@Override
public void focusLost(FocusEvent e)
{
ta2.append("获得了焦点\n");
}
@Override
public void focusGained(FocusEvent e)
{
ta2.append("失去了焦点\n");
}
};
ComponentListener comp=new ComponentListener()
{
@Override
public void componentShown(ComponentEvent e)
{
ta2.append("组件被显示\n");
}
@Override
public void componentResized(ComponentEvent e)
{
ta2.append("组件大小发生变化\n");
}
@Override
public void componentMoved(ComponentEvent e)
{
ta2.append("组件被移动\n");
}
@Override
public void componentHidden(ComponentEvent e)
{
ta2.append("组件被隐藏\n");
}
};
KeyListener key=new KeyListener()
{
@Override
public void keyTyped(KeyEvent e)
{
// ta2.append("单击某个键\n");
}
@Override
public void keyReleased(KeyEvent e)
{
// ta1.append("释放按键");
}
@Override
public void keyPressed(KeyEvent e)
{
ta1.append(e.getKeyText(e.getKeyCode()));
}
};
MouseListener mous1=new MouseListener()
{
@Override
public void mouseReleased(MouseEvent e)
{
ta2.append("松开了鼠标键\n");
}
@Override
public void mousePressed(MouseEvent e)
{
ta2.append("按下鼠标键\n");
}
@Override
public void mouseExited(MouseEvent e)
{
ta2.append("鼠标键离开\n");
}
@Override
public void mouseEntered(MouseEvent e)
{
ta2.append("鼠标键进入\n");
}
@Override
public void mouseClicked(MouseEvent e)
{
ta2.append("鼠标单击\n");
}
};
MouseMotionListener mous2=new MouseMotionListener()
{
@Override
public void mouseMoved(MouseEvent e)
{
ta2.append("在组件上移动鼠标\n");
}
@Override
public void mouseDragged(MouseEvent e)
{
ta2.append("在组件上移动鼠标,且鼠标被按下\n");
}
};
TextListener tex=new TextListener()
{
@Override
public void textValueChanged(TextEvent e)
{
ta2.append("文本空值发生改变\n");
}
};
ItemListener item=new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e)
{
ta2.append("选项被选中\n");
}
};
WindowListener win=new WindowListener()
{
@Override
public void windowOpened(WindowEvent e)
{
ta2.append("窗体被打开\n");
}
@Override
public void windowIconified(WindowEvent e)
{
ta2.append("窗体最小化\n");
}
@Override
public void windowDeiconified(WindowEvent e)
{
ta2.append("窗体被恢复\n");
}
@Override
public void windowDeactivated(WindowEvent e)
{
ta2.append("窗体失去激活\n");
}
@Override
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e)
{
ta2.append("窗体已经关闭\n");
}
@Override
public void windowActivated(WindowEvent e)
{
ta2.append("窗体被激活\n");
}
};
f.addWindowListener(win);
shuru.addKeyListener(key);
ok.addMouseListener(mous1);
f.setVisible(true);
}
}
事件的适配器 可以继承过来重写listener
5.AWT菜单
Menubar菜单条装menu,menu装menuitem和checkboxmenuitem,menuitem和checkmenuitem装menu和menushortcut
publicstatic void main(String[] args)
{
Frame f=new Frame();
f.setLocation(200, 200);
f.setSize(400, 400);
f.setTitle("专业路过");
f.addWindowListener(new WindowAdapter()
{
public voidwindowClosing(WindowEvent e)
{
System.exit(0);
}
});
TextArea ta=new TextArea(6,40);
MenuBar mb=new MenuBar();
Menu file=new Menu("文件");
MenuItem newitem=newMenuItem("新建");
MenuItem saveitem=newMenuItem("保存");
MenuItem exititem=newMenuItem("退出", new MenuShortcut(KeyEvent.VK_X));
Menu edit=new Menu("编辑");
CheckboxMenuItem autowrap=new CheckboxMenuItem("自动换行");
MenuItem copyitem=newMenuItem("复制");
MenuItem pasteitem=newMenuItem("粘贴");
Menu format=new Menu("格式");
MenuItem commentitem=newMenuItem("注释",new MenuShortcut(KeyEvent.VK_SHIFT,true));
MenuItem cancelitem=newMenuItem("取消注释");
ActionListener listener=e->{
Stringstr=e.getActionCommand();
ta.append("单击"+str+"菜单");
if(str.equals("退出"))
{
System.exit(0);
}
};
commentitem.addActionListener(listener);
exititem.addActionListener(listener);
file.add(newitem);file.add(saveitem);file.add(exititem);//为文件菜单添加菜单项
edit.add(autowrap); edit.addSeparator();edit.add(copyitem);edit.add(pasteitem); //为编辑菜单添加菜单项
format.add(commentitem);format.add(cancelitem);//format添加菜单项
edit.add(newMenuItem("-"));edit.add(format);//将format添加到edit形成二级菜单
mb.add(file);mb.add(edit);
//右键菜单
PopupMenu pop=new PopupMenu();
pop.add(copyitem);
Panel p=new Panel();
p.add(pop);
p.addMouseListener(newMouseAdapter()
{
public voidmouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
{
pop.show(p,e.getX(), e.getY());
}
}
});
f.add(ta);
f.add(p);
f.setMenuBar(mb);
f.setVisible(true);
}
6.Awt绘图
三个方法paint()、update()、repaint()
staticString name="";
public static void main(String[] args)
{
Frame f=new Frame();
f.setLocation(200, 200);
f.setSize(400, 400);
f.setTitle("专业路过");
f.addWindowListener(newWindowAdapter()
{
public voidwindowClosing(WindowEvent e)
{
System.exit(0);
}
});
class mycanvas extends Canvas
{
@Override
public void paint(Graphicsg)
{
Random rand=newRandom();
if(name.equals("oval"))
{
g.setColor(newColor(220, 100, 80));
g.drawOval(rand.nextInt(120),rand.nextInt(120), 50, 50);
}
if(name.equals("rect"))
{
g.setColor(newColor(220, 100, 80));
g.drawRect(rand.nextInt(200),rand.nextInt(200), 40, 60);
}
}
}
Button bt1=new Button("绘制矩形");
Button bt2=new Button("绘制圆形");
mycanvas draw=new mycanvas();
bt1.addActionListener(e->{name="rect";draw.repaint();});
bt2.addActionListener(e->{name="oval";draw.repaint();});
f.add(draw);
Panel p=new Panel();
p.add(bt1);p.add(bt2);
f.add(p, BorderLayout.SOUTH);
f.setVisible(true);
}
7.位图处理
BufferedImageimage=new BufferedImage(AREA_WIDTH, AREA_HEIUGHT, BufferedImage.TYPE_3BYTE_BGR);
Graphicsg=image.getGraphics();
g.drawLine(preX,preY, e.getX(), e.getY());
用imageio输入输出位图
(1) 格式
String[] readformat=ImageIO.getReaderFormatNames();//可以读的所有的文件格式
for(String str:readformat){System.out.print(str+"\t");}
System.out.println("\n");
String[] writeformat=ImageIO.getWriterFormatNames();//可以写的所有的文件格式
for(String str:writeformat){System.out.print(str+"\t");}
System.out.println("\n");
String[] name1=ImageIO.getReaderFileSuffixes();//可以读的所有的文件后缀
for(String str:name1){System.out.print(str+"\t");}
System.out.println("\n");
String[] name2=ImageIO.getWriterFileSuffixes();//可以写的所有的文件后缀
for(String str:name2){System.out.print(str+"\t");}
(2) readand write
BufferedImage image=newBufferedImage(600,400,BufferedImage.TYPE_INT_BGR);
Graphics g=image.getGraphics();
Image src=ImageIO.read(new File("背景.jpg"));
g.drawImage(src, 0, 0, 600,400,null);
ImageIO.write(image, "jpeg", new File("hello"+".jpg"));
8.剪切板
//require system clipboard
Clipboard clipboard=Toolkit.getDefaultToolkit().getSystemClipboard();
//Clipboard clipboard=new Clipboard("cb");
StringSelection contents=new StringSelection(copyarea.getText());
clipboard.setContents(contents,null);//copy to clipboard
String contents=(String)clipboard.getData(DataFlavor.stringFlavor);
pastearea.setText(contents);//paste
jdk只是为transferable提供了一个实现的接口StringSelection,但是提供了一个imageFlavor常量,用于图片的操作
Image img;
public static List<Image> imglist=new ArrayList<>();
staticclass imageselection implementsTransferable
{
private Image image;
publicimageselection(Image img)
{
image=img;
}
public DataFlavor[]getTransferDataFlavors()
{
return newDataFlavor[]{DataFlavor.imageFlavor};
}
public booleanisDataFlavorSupported(DataFlavor flavor)
{
returnflavor.equals(DataFlavor.imageFlavor);
}
public ObjectgetTransferData(DataFlavor flavor)throws UnsupportedFlavorException,IOException
{
if(flavor.equals(DataFlavor.imageFlavor)){ returnimage;}
else
{ try
{
throw newException();
} catch (Exceptione)
{
// TODOAuto-generated catch block
e.printStackTrace();
}}
return flavor;
}
}
class mycanvas extends JPanel
{
public void paint(Graphics g)
{
g.drawImage(img, 0, 0,null);
for(Imagei:imglist)
{
g.drawImage(i, 0, 0,600,400,null);
}
}
}
pastebutton.addActionListener(e->
{
if(clipboard.isDataFlavorAvailable(DataFlavor.imageFlavor))
{
try
{
imglist.add((Image)clipboard.getData(DataFlavor.imageFlavor));
arae.repaint();
}
catch (Exceptione1)
{
pastearea.setText("剪切板内容为空");
}
}
});
copybutton.addActionListener(e->
{
StringSelection contents=new StringSelection(copyarea.getText());
try
{
img=ImageIO.read(new File("背景.jpg"));
} catch (IOExceptione1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
imageselection imageselected=newimageselection(img);
clipboard.setContents(imageselected,null);
});
9,拖放
Awt的类,droptarget创建拖放目标,构造器droptarget(Component c,int ops,droptargetlistener dtl)
ops:DnDConstants.ACTION_COPY/COPY_OR_MOVE/LINK/MOVE/NONE
dtl:dragenter/drahexit/dragover/drop/dropactionchange
public void drop(DropTargetDropEvent dtde)
{
dtde.acceptDrop(DnDConstants.ACTION_COPY);//接受复制操作
//获取拖放的内容
Transferable trans=dtde.getTransferable();
DataFlavor[] flavors=trans.getTransferDataFlavors();
//遍历拖放内容的全部格式
for(inti=0;i<flavors.length;i++)
{
DataFlavor df=flavors[i];
if(df.equals(DataFlavor.javaFileListFlavor))
{
try
{
List filelist=(List)trans.getTransferData(df);
for(Objectf:filelist)
{
//======显示每个文件
showimage((File)f,dtde);
}
} catch (Exceptione)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
dtde.dropComplete(true);
}
}
newDropTarget(jf,DnDConstants.ACTION_COPY,new imagedroptargetlistener());
Swing
1.顶层容器:jframe/japplet/jwindow
中间:jpanel/jscroll/jsplitpane/jtoolbar/jinternalframe/jrootpane/jlayeredoane/jdesktoppane
基本组件:Jbutton/jcombobox/jlist/jmenu/jslider等交互
不可编辑:jlabel/jprogressbar/jtooltip
可编辑:jtable/jtextfiled/jtextarea
对话框组件jcolorchooser/jfilechooser
package com.zylg.www;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButton;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class find
{
JFrame frame=new JFrame("专业路过");
JButton ok=new JButton("确认");
JRadioButton male=new JRadioButton("男",true);
JRadioButton female=new JRadioButton("女",false);
ButtonGroup bg=new ButtonGroup();
JCheckBox married=new JCheckBox("is married",false);
String[] colors=new String[]{ "red","green","blue"};
JComboBox<String> colorchooser=new JComboBox<>(colors);
JList<String> colorList = new JList<>(colors);
JTextArea ta=new JTextArea(8,20);
JTextField name=new JTextField(40);
JMenuBar menubar=new JMenuBar();
JMenu file=new JMenu("file"),edit=new JMenu("edit"), format=new JMenu("format");
JMenuItem newfile=new JMenuItem("new");
JMenuItem savefile=new JMenuItem("save");
JMenuItem exit=new JMenuItem("exit");
JCheckBoxMenuItem autowrap=new JCheckBoxMenuItem("auto wrap");
JMenuItem copyitem=new JMenuItem("copy");
JMenuItem pasteitem=new JMenuItem("paste");
JMenuItem contentitem=new JMenuItem("content");
JMenuItem cancelitem=new JMenuItem("cancel");
JPopupMenu pop=new JPopupMenu();
ButtonGroup flavorgroup=new ButtonGroup();
JRadioButtonMenuItem metalItem=new JRadioButtonMenuItem("Metal风格",true);
JRadioButtonMenuItem nimbusItem =new JRadioButtonMenuItem("Nimbus风格");
JRadioButtonMenuItem windowsItem =new JRadioButtonMenuItem("Windows风格");
JRadioButtonMenuItem classicItem =new JRadioButtonMenuItem("Windows经典风格");
JRadioButtonMenuItem motifItem =new JRadioButtonMenuItem("Motif风格");
public void init()
{
JPanel