笔记之_java窗体程序整理

javaswing的动态增加控件:
    class dynmaicBtnListener implements java.awt.event.ActionListener{  

        @Override
        public void actionPerformed(ActionEvent e) {
           System.out.println("new button clicked.");
        }  

    }
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        CenterViewPanel.setLayout(new BoxLayout(CenterViewPanel, BoxLayout.Y_AXIS));
        JButton newbtn = new JButton("MyDynamicButton");
        newbtn.addActionListener(new dynmaicBtnListener ());
        CenterViewPanel.add(newbtn);
//        CenterViewPanel.validate();
//        CenterViewPanel.repaint();
        CenterViewPanel.revalidate();
}
在动态增加控件的时候,必须在add之前调用layout设置方法。不然没有效果。
 CenterViewPanel.setLayout(new BoxLayout(CenterViewPanel, BoxLayout.Y_AXIS));
在add之后要调用
        CenterViewPanel.validate();
        CenterViewPanel.repaint();
或
        CenterViewPanel.revalidate();
去刷新重绘控件。
javaswing的控件属性:
    了解各种用户界面组件:
JButton、JLabel、JTextField、JTextArea、JComboBox、 Jlist、JCheckBox、JRadioButton、JMenuBar、JMenu、JMenuItem、JCheckBoxMenuItem、JRadioButtonMenuItem、JScrollBar、JScrollPane、JTabbedPane等
一、JButton
按钮是一种点击时触发行为事件的组件。
按钮的四个构造方法:
public Jbutton()创建一个空按钮
public JButton(String text) 创建一个标有指定文字的按钮
public JButton(Icon icon) 创建一个标有指定图标的按钮
public JButton(String text,Icon icon) 创建一个标有指定文字和图标的按钮
图标:是一个固定大小的图片,典型的图标体形较小,用于装饰组件。利用类ImageIcon可以从图像文件中得到图标,如:Icon icon=new ImageIcon(“photo.gif”); 

JButton 的属性
text:按钮上的标签,例如可用jbt.setText(“OK”)给按钮jbt设置标签。
icon:按钮上的图标,例如可用jbt.setTextIcon(new ImageIcon(“a.gif”))。
mnemonic:指定热键。同时按下ALT键和指定热键相当于按下该按钮。例如使用jbt.setMnemonic(‘O’)可将O设置为按钮jbt的热键。
horizontalAlignment:此属性只有三个值SwingConstants.LEFT,SwingConstants.CENTER, SwingConstants.RIGHT。它指定按钮上标签的水平对齐方式。默认值为居中。
verticalAlignment:此属性也取三个值SwingConstants.TOP, SwingConstants.CENTER和SwingConstants.BOTTOM。它指定按钮上标签的垂直对齐方式。默认值为居中。
horizontalTextPosition:此属性有三个值SwingConstants.LEFT, SwingConstants.CENTER, SwingConstants.RIGHT。它指定文本相对于图标的水平位置,默认为SwingConstants.RIGHT。对应方法setHorizontalTextPosition。
verticalTextPosition:此属性有三个值SwingConstants.TOP, SwingConstants.CENTER, SwingConstants.BOTTOM。它指定文字相对图标的垂直位置,默认值为SwingConstants.CENTER。对应方法setVerticalTextPosition。 

二、JLabel
标签是显示一小段文字、一幅图片或者二者皆有的区域。
它的六个构造方法如下:
public JLabel()       创建一个空标签。
public JLabel(String text,int horizontalAlignment) 创建一个指定内容字符串和水平对齐方式的标签。其中水平对齐方式可取值SwingConstants.LEFT, SwingConstants.CENTER, SwingConstants.RIGHT。
public JLabel(String text) 创建一个指定文字的标签。
public JLabel(Icon icon) 创建一个指定图标的标签。
public JLabel(Icon icon,int horizontalAlignment) 创建一个指定图标和水平对齐方式的标签。
public JLabel(String text,Icon icon,int horizontalAlignment) 创建一个指定文本、图标和水平对齐方式的标签。
例如,下面语句创建一个文本内容为“Interest Rate”的标签:
JLabel myLabel = new JLabel(“Interest Rate”);
下面的语句创建一个标签,它使用文件“images/map.gif”中的图像作图标:
JLabel mapLabel = new JLabel(new ImageIcon(“images/map.gif”);
JLabel 的属性
JLabel继承了类Jcomponent的所有属性,并具有JButton类的许多属性,如:
text
icon
horizontalAlignment
verticalAlignment 

三、JTextField
文本域是一个用户可以输入字符的输入区。允许用户输入各种数据,如姓名和描述文字。
JTextField的四个构造方法:
public JTextField() 创建一个空文本域。
public JTextField(int columns) 创建一个指定列数的空文本域。
public JTextField(String text) 用指定初始文字创建一个文本域。
public JTextField(String text,int columns) 创建一个文本域,并用指定文字和列数初始化。 

JTextField 属性
除了text、horizontalAlignment等属性外,JTextField还有如下属性:
editable 布尔型属性,表明用户能否修改文本域。
columns 文本域的宽度。 

JTextField 方法
getText() 从文本域返回字符串。
setText(String text) 将给定字符串写入文本域当中
setEditable(boolean editable) 使文本域变为可编辑的,默认为true。
setColumns(int) 设置文本与的列数,文本域的长度可变。 

四、JTextArea
如想让用户输入多行文本,只能通过创建多个JTextField实例来实现,解决问题的更好办法是使用JTextField,它允许用户输入多行文字。
JTextArea的三个构造方法:
public JTextArea() 创建一个空的文本区。
JTextArea(int rows, int columns) 创建一个指定行数和列数的文本区。
JTextArea(String s, int rows, int columns) 创建一个指定文本、行数和列数的文本区。 

JTextArea 属性
除了text、editable、columns外,JTextArea还有以下属性:
lineWrap
wrapStyleWord
rows
lineCount
tabSize
JTextArea 的方法
以下方法用于插入、追加和替换文本:
public void inser(String s,int pos) 将字符串s插入到文本区的指定位置pos。
public void append(String s) 将字符串s添加到文本的末尾。
public void replaceRange(String s,int start,int end) 用字符串s替换文本中从位置start到end的文字。 

五、JComboBox
组和框是一些项目的简单列表,用户能够从中进行选择。
JComboBox的两个构造方法:
public JComboBox()默认构造方法。
public JComboBox(Object[] stringItems) 带有字符串列表的构造方法,其中stringItems是一个字符串数祖。
JComboBox的属性
JComboBox的有用的属性:
selectedIndex   int值,表示组合框中选定项的序号。
selectedItem  Object类型,表示选定项。
JComboBox 的方法
有用的方法:
public void addItem(Object item)在组和框中添加一个选项,它可以是任何对象。
public Object getItemAt(int index) 得到组合框中指定序号的项。
public void removeItem(Object anObject)删除指定的项。
public void removeAllItems()   删除列表中所有项。 

六、JList
列表框的作用和组合框的作用基本相同,但它允许用户同时选择多项。
JList的两个构造方法:
JList()
创建一个空的列表框
JList(Object[] stringItems)
创建一个有初始项的列表框
JList不会自动滚动。给列表框加滚动条的方法与文本区相同,只需创建一个滚动窗格并将列表框加入其中即可。 

Jlist的 属性
selectedIndexd
selectedIndices
selectedValue
selectedValues
selectionMode
visibleRowCount 

七、JCheckBox
复选框是一种用户能够打开、关闭选项的组件,如同电灯开关一般。
JCheckBox的七个构造方法:
JCheckBox()
JCheckBox(String text)
JCheckBox(String text, boolean selected)
JCheckBox(Icon icon)
JCheckBox(Icon icon, boolean selected)
JCheckBox(String text, Icon icon)
JCheckBox(String text, Icon icon, boolean selected)
JCheckBox 的属性
JCheckBox 除了具有JButton的所有属性如text、icon、mnemonic、verticalAlignment、horizontalAlignment、horizontalTextPosition和verticalTextPosition 外,还有selected属性,该属性指明复选框是否被选中。 

八、JRadioButton
    单选按钮,或叫选择按钮,让用户从一组组件中选择唯一的一个选项。
JRadioButton的七个构造方法:
JRadioButton()
JRadioButton(String text)
JRadioButton(String text, boolean selected)
JRadioButton(Icon icon)
JRadioButton(Icon icon, boolean selected)
JRadioButton(String text, Icon icon)
JRadioButton(String text, Icon icon, boolean selected)
JRadioButton 的属性
JRadioButton 除具有JButton的所有属性如text、icon、mnemonic、verticalAlignment、 horizontalAlignment、horizontalTextPosition、verticalTextPosition外,还具有 selected属性,该属性指明单选按钮是否被选中。 

将单选钮组合成组
单选按钮可以象按钮一样添加到容器中。要将单选按钮分组,需要创建java.swing.ButtonGroup的一个实例,并用add方法把单选按钮添加到该实例中,如:
ButtonGroup btg = new ButtonGroup();
btg.add(jrb1);
btg.add(jrb2);
上述代码创建了一个单选按钮组,这样就不能同时选择jrb1和jrb2。
九、消息对话框
对话框通常用作临时窗口,用来接受用户的附加信息或提示用户发生了某事件。
消息对话框是一种简单却频繁使用的对话框,用来显示消息提醒用户。
消息对话框是模式的,即消息对话框消失前其他窗口均不可用。
创建消息对话框
使用 JOptionPane类中的静态方法:
showMessageDialog(Component parentComponent, Object message, String title, int messageType)
parentComponet是对话框的父组件,对话框都是由它派生而来的。message是要显示的对象,它通常是一个字符串。title是对话框的标题。messageType决定了所显示消息的类型。
showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)
除PLAIN_MESSAGE外,每种消息都有相应的图标,以上方法可支持自制图标。
javaswing的注册事件:
Swing 是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具。Java Swing组件自动产生各种事件来响应用户行为。Java将事件封装成事件类,并且为每个事件类定义了一个事件监听器。一个组件注册事件监听器方法,表明该组件要响应指定事件。也就是说我们可以通过注册监听器,监听事件源产生的事件,从而在事件处理程序中处理我们所需要处理的用户行为。
          Java Swing中处理各组件事件的一般步骤是:
          1.  新建一个组件。
          2.  将该组件添加到相应的面板。
          3.  注册监听器以监听事件源产生的事件
          4.  定义处理事件的方法。
注册事件我们一般采用两种方式:一是:利用一个监听器以及多个if语句来决定是哪个组件产生的事件;二是使用多个内部类来响应不同组件产生的各种事件,它又分两种方式,一种是采用匿名内部类,一种是采用一般内部类。
下面我们采用以上三种方式来注册事件。来说明以上三种方式是如何实现事件的处理方法。
一、采用一个监听器多个if语句来实现
在这种方式下:我们要继承ActionListener接口,并且要实现actionPerformed方法。通过getActionCommand()方法来获取事件的事件源。
 [java] view plain copy
public class Test_01 extends JFrame implements ActionListener {
    Test_01() {
        JPanel panel = new JPanel();
        JButton button1 = new JButton("按钮一");
        JButton button2 = new JButton("按钮二");
        panel.add(button1);
        panel.add(button2);
        this.getContentPane().add(panel);
        this.setVisible(true);
        button1.addActionListener(this);
        button2.addActionListener(this);  

    }
    public void actionPerformed(ActionEvent e) {
        String source = e.getActionCommand();
        if (source.equals("按钮一")) {
            System.out.println("你按了按钮一");
        }
        if (source.equals("按钮二")) {
            System.out.println("你按了按钮二");
        }
}
    public static void main(String args[]) {
        new Test_01();
    }
}
利用一个监听器来处理事件的缺点是:其实当处理的事件比较少的时候,这种方式还是一种比较好的方式,它简单。当程序比较复杂时,需要一大串的if语句来实现。程序的代码比较难阅读和维护。
一、利用匿名内部类来是实现
[java] view plain copy
public class Test_02 extends JFrame{
    Test_02(){
        JPanel panel = new JPanel();
        JButton button1 = new JButton("按钮一");
        JButton button2 = new JButton("按钮二");
        panel.add(button1);
        panel.add(button2);
        this.getContentPane().add(panel);
        this.setVisible(true);
        button1.addActionListener(
                new ActionListener(){
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("你按了按钮一");
                    }
                });
        button2.addActionListener(
                new ActionListener(){
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("你按了按钮二");
                    }
                });
    }
    public static void main(String args[]){
        new Test_02();
    }
}
使用匿名内部类来实现可以解决使用if来获取事件源带来的麻烦。但是使用匿名内部类同样存在着一些问题。由于它是和事件组一起的。根据事件组在代码中的位置不同,类的定义以及处理事件,同样不便于阅读。如果事件处理程序比较复杂,内部类中的代码就会变的很长。
三、利用一般内部类来实现
[java] view plain copy
public class Test_03 extends JFrame{  

    Test_03(){
        JPanel panel = new JPanel();
        JButton button1 = new JButton("按钮一");
        JButton button2 = new JButton("按钮二");
        panel.add(button1);
        panel.add(button2);
        this.getContentPane().add(panel);
        this.setVisible(true);
        button1.addActionListener(new Button1ActionListener());
        button2.addActionListener(new Button2ActionListener());  

}
    private class Button1ActionListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            System.out.println("你按了按钮一");
        }
    }
    private class Button2ActionListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            System.out.println("你按了按钮二");
        }
    }
    public static void main(String[] args) {
        new Test_03();
    }
}
利用一般内部类我们可以解决很多的问题,该方法避免了第二种方法中由于使用匿名内部类而导致的代码混乱。它把所有的事件处理方法都集中在一块,并且都具有有意义的名称,程序非常容易阅读与维护。单个的事件处理程序也可以被工具栏、菜单栏等重复使用。
基于上面的总结,我们一般采用第三种方法来注册事件
时间: 2024-07-31 11:48:03

笔记之_java窗体程序整理的相关文章

笔记之_java的angularjs整理

Angularjs隐藏域不能取值 Responseentity两种传递json的方式,在MVC中 Use strict严格模式是javascript检查重复键.为申明变量.重复参数 Js不在服务器编译,el表达式要在服务器编译 :后为方法 1.AngularJS 通过 ng-directives(ng-指令) 扩展了 HTML. ng-app 指令定义一个 AngularJS 应用程序. ng-model 指令把元素值(比如输入域的值)绑定到应用程序. ng-bind 指令把应用程序数据绑定到

笔记之_Java的html整理

border: 1px solid #000000 表格要边框不要内部的线 A标签禁止跳转,执行javascript的方法 href="javascript:void(0)" onclick="javascript:$('#dd').dialog('close')" 输入框不可编辑: 方法1: onfocus=this.blur() 当鼠标放不上就离开焦点 <input type="text" name="input1"

笔记之_Java的JDBC整理

Java中利用Object方式为日期赋值 将字符串类型转为java的日期类型,然后转换为sql的日期类型 new java.sql.Date(DateFormat.getDateInstance().parse(joinDate).getTime())) JDBC:Java程序连接数据库的技术 DriverManager:驱动管理类 Connection:桥梁接口 Preparedstatement:接口可以使用参数,较statement更好更安全 Resultset:接口,结果集 服务器: 应

笔记之_Java数据库整理

sqlserver复制表结构:并删除数据: select T.* into TABLE_ORDER_CANCEL from TABLE_ORDER T TRUNCATE TABLE TABLE_ORDER_CANCEL Count(*)后不能排序 数据库的四个特性: 原子性.一致性.隔离性.持久性 事务隔离级别: 脏读 不可重复读 幻读 Read uncommitted √ √ √ Read committed × √ √ Repeatable read × × √ Serializable ×

微信小程序-整理各种小程序源码和资料免费下载

微信小程序整理下载 [小程序源码]微信小程序-车源宝微信版 [小程序源码]小程序-微赞社区(论坛demo) [小程序源码]微信小程序-收支账单 [小程序工具]微信小程序-日历 [小程序源码]小程序-在线聊天功能 [小程序源码]微信小程序-大好商城(新增功能天气查询和2048游戏) [小程序源码]微信小程序-查询号码归属地 [小程序源码]微信小程序-备忘录2 [小程序源码]微信小程序-QQ音乐 [小程序源码]小程序-货币汇率 [小程序源码]微信小程序-大学图书馆 [小程序源码]小程序-积分商城 [

(原创)c#学习笔记02--编写c#程序03--Windows Forms应用程序

2.3  Windows Forms应用程序 本解讲解如何创建一个windows forms应用程序,参考:(原创)c#学习笔记02--编写c#程序01--开发环境,修改为选择:Windows 窗体应用程序.如下图: 单击“确定”(OK)按钮,创建项目后,应该会看到一个空白的Windows窗体.把鼠标指针移到屏幕左边的“工具箱”(Toolbox)栏上,然后移到“所有 Windows 窗体”(All Windows Forms)选项卡上的Button选项,在该选项上双击,就会在应用程序的主窗体(F

Linux 程序设计学习笔记----进程管理与程序开发(下)

转载请注明出处:http://blog.csdn.net/suool/article/details/38419983,谢谢! 进程管理及其控制 创建进程 fork()函数 函数说明具体参见:http://pubs.opengroup.org/onlinepubs/009695399/functions/fork.html 返回值:Upon successful completion, fork() shall return 0 to the child process and shall re

《软件调试的艺术》笔记--停下来环顾程序

1.断点列表 创建的每个断点(包括断电.监视点和捕获点)都标识为从1开始的唯一整数标识符.这个标识符用来执行该断点上的各种 操作.调试器还包含一种列出所有断点及其属性的方法. 调试下面的代码:(代码1) #include <stdio.h> void display(int i) { i = i + 1; printf("i = %d\n",i); } int main(void) { int i = 1; display(i); return 0; } 设置断点--显示断

python数据分析笔记——数据加载与整理]

[ python数据分析笔记--数据加载与整理] https://mp.weixin.qq.com/s?__biz=MjM5MDM3Nzg0NA==&mid=2651588899&idx=4&sn=bf74cbf3cd26f434b73a581b6b96d9ac&chksm=bdbd1b388aca922ee87842d4444e8b6364de4f5e173cb805195a54f9ee073c6f5cb17724c363&mpshare=1&scene=