javaswing开发窗体程序开发(⼀)GUI编程
Java SWing就是java提供的⼀个类库专门⽤于开发窗体程序的,相对于C#的winform,java swing的开发要⽐C#更加⿇烦,他不像C#拥有可视化的界⾯编辑⼯具
⽽是需要像QT⼀样纯代码式GUI编程。java的好处就是通⽤性强,跨平台,这个java窗体程序做好之后,哪都可以⽤。然⽽C#的winform 只能运⾏在有框架上
的平台,然⽽⽀持最好的,也就只有windows了。C#的开发效率更⾼
以下讲解Java swing的开发
(⼀)第⼀个java swing程序
public static void main(String[] args)
{
//java Swing学习
//⽣成窗⼝
JFrame windows1=new JFrame("窗⼝1");
JFrame windows2=new JFrame("窗⼝2");
Container ContentPane();//获得这个窗⼝的内容⾯板
container1.setBackground(Color.blue);//设置背景颜⾊
windows1.setBounds(60,100,188,108);//设置位置⼤⼩
windows2.setBounds(260,100,188,108);
windows1.setVisible(true);//可视性设置
windows1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置按x后的操作.[这个只是关闭那个窗⼝]
java开发可视化界面windows2.setVisible(true);
windows2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置按x后的操作.[这个是关闭整个程序,将会关闭所有窗⼝]
}
需要注意的是,在设置位置和⼤⼩时,即setBounds,⼀共有4个参数,前⾯两个是坐标信息,即x,y坐标。对于屏幕坐标系,这个坐标原点在屏幕左上⾓,以下为y正轴,右为x正轴
还有就是DISPOSE_ON_CLOSE EXIT_ON_CLOSE的区别。
运⾏的效果如下
(⼆)带有菜单栏,菜单条,和⼦菜单的窗体程序
⾸先要知道⼏个常见类和函数
JMenuBar:代表菜单条,他需要被设置给JFrame窗体中
JMenu:代表菜单,他需要被放在菜单条中
JMenuItem:代表菜单项,续杯放在菜单中。
Icon:代表图标,使⽤new ImgeIcon(“⽂件路径”);//使⽤绝对路径,这⾥由于是linux所以没有盘符
常⽤函数
JFrame:
setJMenuBar(JMenuBar menuBar);//将菜单条设置给窗⼝
JMenu:
add(JMenuItem);//在菜单中添加菜单项
add(JMenu);//在菜单中添加⼦菜单
addSoearator();//添加分割线
JMeunItem:
其的双参构造⽅法:第⼀个是菜单项名字,第⼆个是菜单项图标
/**
* 创建⼀个带菜单条,菜单项,⼦菜单的窗⼝
*/
public class MainForm extends JFrame {
JMenuBar menuBar;//菜单条
JMenu menu1,menu2,submenu;//菜单
JMenuItem item1,item2;//菜单项
/**
* 创建这个窗⼝的构造函数
* @param title 窗⼝名字
* @param posX X坐标
* @param posY Y坐标
* @param width 宽
* @param height ⾼
*/
public MainForm(String title,int posX,int posY,int width,int height)
{
init(title);
//setIconImage();//设置窗体图标
setLocation(posX,posY);//该函数继承⾄JFrame⽤于设置位置
setSize(width,height);//该函数继承⾄JFrame⽤于设置⼤⼩
setVisible(true);//同上,设置可视性
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//同上,设置关闭时的操作
}
private void init(String title)
{
setTitle(title);//继承⾄JFrame,设置窗⼝标题
menuBar =new JMenuBar();//实例化菜单条
menu1=new JMenu("菜单1");//实例化菜单
menu2=new JMenu("菜单2");//同上
submenu=new JMenu("⼦菜单1");//同上
item1=new JMenuItem("菜单项1",new ImageIcon("/home/zuikaku/图⽚/1.png"));//实例化菜单项并设置图标
item2=new JMenuItem("菜单项2",new ImageIcon("/home/zuikaku/图⽚/1.png"));//实例化菜单项并设置图标
item1.KeyStroke('A'));//设置快捷键
item2.KeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_MASK));//设置组合快捷键
menu1.add(item1);//将菜单项添加⼊菜单中
menu1.addSeparator();
menu1.add(item2);//同上
menu1.add(submenu);//将菜单加⼊菜单中,即作为其⼦菜单
submenu.add(new JMenuItem("⼦菜单项1",new ImageIcon("/home/zuikaku/图⽚/1.png")));//⼦菜单中添加菜单项 submenu.add(new JMenuItem("⼦菜单项2",new ImageIcon("/home/zuikaku/图⽚/1.png")));//⼦菜单中添加菜单项 menuBar.add(menu1);//菜单条中添加菜单
menuBar.add(menu2);//同上
setJMenuBar(menuBar);//将该菜单条设置给这个窗⼝
}
}
实例化这个MainForm的效果就是
(三)Java Swing中的常⽤组件
组件的作⽤就是与⼈交互,他们就是⽤来显⽰提供给⽤户的信息或捕捉。这些组件都继承⾄JComponent 常⽤的有
JTextField:单⾏⽂本输⼊
JTextArea:多⾏⽂本输⼊
JButton:按钮
JLabel:标签,⽤于显⽰提⽰信息
JCheckBox:复选框
JRadioButton:单选框-需要归组后才能实现单选
JComboBox:下拉列表
JPasswordField:密码框
需要注意的是,这些组件new出来后,是不会显⽰的,要将其添加add到这个窗体中,才会显⽰
/**
* 展⽰java swing中的常见组件
*/
public class UserInputForm extends JFrame{
JLabel usernameLabel;
JLabel passwordLabel;
JLabel personalInfoLabel;
JTextField usernameInput;
JPasswordField passwordInput;
JTextArea personalInputArea;
JCheckBox checkBox1;
JCheckBox checkBox2;
JRadioButton men;
JRadioButton women;
JComboBox<String> countryComboBox;
ButtonGroup buttonGroup;//⽤于单选框的归组
JButton submitBtn;
public UserInputForm(String title,int posX,int posY,int width,int height) {
init();
setTitle(title);
setLocation(posX,posY);
setSize(width,height);
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
private void init()
{
setLayout(new FlowLayout());//设置布局
usernameLabel=new JLabel("⽤户名");
passwordLabel=new JLabel("密码");
personalInfoLabel=new JLabel("个⼈信息");
usernameInput=new JTextField();
passwordInput=new JPasswordField();
personalInputArea=new JTextArea();
checkBox1=new JCheckBox("哈哈");
checkBox2=new JCheckBox("嘻嘻");
men=new JRadioButton("男");
women=new JRadioButton("⼥");
buttonGroup=new ButtonGroup();
buttonGroup.add(men);
buttonGroup.add(women);
countryComboBox=new JComboBox<String>();
countryComboBox.addItem("下拉选项1");
countryComboBox.addItem("下拉选项2");
submitBtn=new JButton("提交");
//将这些组件加⼊到这个窗⼝中-才可以显⽰
add(usernameLabel);
add(passwordLabel);
add(personalInfoLabel);
add(usernameInput);
add(passwordInput);
add(personalInputArea);
add(checkBox1);
add(checkBox2);
add(men);
add(women);
add(countryComboBox);
add(submitBtn);
}
}
效果如下
(四)常见容器(⾯板)【中间层容器】
刚刚是将所有的组件添加到继承⾄JFrame的类中,JFrame叫做底层容器,然⽽在实际开发和为了更好的使⽤【例如实现同⼀个窗⼝切换选项卡有不同的⾯板】
这些组件并不是直接添加在底层容器。⽽是添加到中间层容器。当然,这个中间层容器也必须添加到底层容器JFrame中才会启作⽤。否则显⽰不出来
即必须有⼀个类继承⾄JFrame,且这个类将⾯板或是布局,add进去。然后实例化这个继承⾄JFrame的类,才看的到。
1:JPanel⾯板:常⽤JPanel作为⼀个⾯板,最普通的⾯板,向该⾯板中添加组件。默认布局是FlowLayout
2:JTabbedPane可切换选项卡⾯板:特点,向该⾯板中添加组件时,会可以为这个组件添加选项卡。即通过选项卡可以切换不同的组件(也可以是⼦⾯板JPanel),相当于,第⼀个选项卡点击
显⽰第⼀个界⾯,第⼆个选项卡点击,不开新窗⼝,就在该窗⼝上显⽰第⼆个界⾯。使⽤add(String text,Component c);//这个函数来指定选项卡名字和组件之间的对应关系
选项卡的位置在构造JTabbedPane对象时可以指定,其构造函数参数为int类型,实际是⼀个静态常量,枚举表⽰的是选项卡的位置JTabbedPane.Bottom/Top/LEFT/RIGHT
3:JSrollPane滚动⾯板:其只可以添加⼀个组件,通常和JTextArea配合使⽤,作为⽂本输⼊栏的滚动条
JScrollPane scroll=new JScrollPanel(new JTextArea());
4:JSplitPane拆分⾯板:即⾯板分为两部分,可以按左右分割,左右各⼀个,也可以按上下分割,上下各⼀个
构造⽅法
JSplitPane splitPanel=new JSplitpanel(int a,Component b,Conponent c);
其中a是个静态常量,代表是⽔平分割还是垂直,分别是JSplitpane.HORIZONTAL_SPLIT和JSplitpane.VERTICAL_SPLIT
5:JLayeredPane分层⾯板:⽤于处理组件重叠问题
需要注意的是,这个层并不是可以⾃⼰定义,和Unity的OrderInLayer和SortLayer不同。JavaSwing中总共就定义了5层,从低到⾼,分别是
DEFAULT_LAYER,PALETTE_LAYER,MODAL_LAYER,POPUP_LAYER,DRAG_LAYER
同⼀位置,⾼层的会覆盖显⽰底层的。对于同层的,后来的会覆盖新来的
//使⽤add(Component, layer)可以添加组件并设置值
setLayer(Component c,int layer));//可以重新设置layer
getLayer(Component c);//可以获得⼀个组件的Layer
(五)设置布局
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论