Java——创建复杂的用户界面

创建复杂的用户界面

Swing包含400多个不同的类,在这使其成为Java中最大的类库。其中的很多类可用之前介绍的技术来实现——所有Swing容器和组件由相同的超类,这使他们的行为相同。下面我们将介绍Swing程序中使用的其他组件。

1、滚动窗格

要从组件的一部分移动到另一部分,可使用垂直和水平滚动条。在Swing中通过将组件加入到滚动窗格中来提供滚动功能。滚动窗格是一种容器,用Swing中的JscrollPane类表示,可以使用一下函数来创建:

JscrollPane():创建必要时显示垂直和水平滚动条的滚动窗格;

JScrollPane(int , int):创建包含指定的垂直和水平滚动条的滚动窗格;

JscrollPane(Component):创建包含指定用户界面组件滚动窗格;

JscrollPane(Component , int, int):创建包含指定组件以及垂直和水平滚动条的滚动窗格;

在构造函数中使用整型参数指定如何在窗格中使用滚动条,可使用下述变量作为参数:

JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED或JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED

JScrollPane.VERTICAL_SCROLLBAR_NEVER或JScrollPane.HORIZONTAL_SCROLLBAR_NEVER

JScrollPane.VERTICAL_SCROLLBAR_ALWAYS或JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS

如果创建了没有包含组件的滚动窗格,可以使用窗格的add(Component)方法来添加组件。设置好滚动窗格后,应将其像组件那样加入到容器中。

下面是一个使用滚动窗格的示例程序:

import java.awt.FlowLayout;
importjava.awt.HeadlessException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;
 
public class MyCheckBoxextends JFrame{
    public MyCheckBox() throwsHeadlessException {
        super("复选框测试");
        setSize(370, 270);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FlowLayout flowLayout = newFlowLayout(FlowLayout.RIGHT);
        setLayout(flowLayout);
        JPanel row1 = new JPanel();
        JLabel label1 = newJLabel("To:");
        JTextField textField1 = newJTextField(24);
        row1.add(label1);
        row1.add(textField1);
        add(row1);
       
        JPanel row2 = new JPanel();
        JLabel label2 = newJLabel("Subject:");
        JTextField textField2 = newJTextField(24);
        row2.add(label2);
        row2.add(textField2);
        add(row2);
       
        JPanel row3 = new JPanel();
        JLabel label3 = newJLabel("Message:");
        JTextArea textArea = new JTextArea(4,22);
              //设置文本自动换行
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
              //将组件加入滚动条,并设置滚动条的类型
        JScrollPane scrollPane = newJScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        row3.add(label3);
        row3.add(scrollPane);       
        add(row3);
       
        JPanel row4 = new JPanel();
        JButton button = newJButton("Send");
        row4.add(button);
        add(row4);
        setVisible(true);
    }
   
    public static void main(String[] args)
    {
        MyCheckBox checkBox = new MyCheckBox();
    }

}

Message中输入的文本自动换行是使用上面有注的语句实现的

2、滑块

对于用户来说,输入数字最简单的方法之一就是使用滑块,这是个可上下或左右拖拽的组件。在Swing中,滑块用JSlider类表示。

滑块用于从指定范围选择一个数字,这些值可显示在标签上,包括最小值、最大值和中值。

可以使用下面的构造函数来创建水平滑块:

JSlider():创建最小值为0,最大值为100,初始值为50的滑块;

JSlider(int , int):创建具有指定最大和最小值的滑块;

JSlider(int , int , int):创建具有指定最大和最小值、初始值的滑块。

要创建垂直滑块,必须使用接受另外一个附加参数的构造函数,该参数应设置为类变量JSlider.VERTICAL或JSlider.HORIZONTAL。

下面的语句创建一个垂直滑块,可选择1~1000的整数:

JSlider slider = new Jslier(JSlider.VERTICAL, 1 , 1000 , 500);

要在滑块上显示标签,必须设置标签包含的信息。调用滑块的setMajorTickSpacing(int)和setMinorTickSpacing(int)方法指定标签上刻度的密度。住刻度使用的线条比次刻度粗。

在设置了刻度的密度后,可调用滑块的setPaintTicks(boolean)方法和setPaintLabels()方法控制刻度和标签的显示,下面是一个显示效果:



3、变更监听器

为了监视用户使用滑块进行的输入,必须有实现ChangeListener接口的类,该接口位于javax.swing.event包中。该接口只包含一个方法,格式如下:

Public voidstateChanged(ChangeEvent e){}

调用滑块所属的容器的addChangeListener(Object)方法,可以讲对象注册为变更监听器,滑块移动停止后,将调用监听对象的stateChanged()方法。调用该对象的getSource()方法将获得滑块的焦点值。


通过调用getValueIsAdjusting()判断滑块是否在移动。下面是一个通过3个滑块来改变颜色的示例,代码太多大家可以自行下载,地址为:http://download.csdn.net/detail/zhai56565/5151200
下面是程序运行效果图:


4、使用图像图标和工具栏

为改善图形用户界面的视觉效果,最简单的一种方法是使用图标来标识按钮和界面的其他部分。为此可使用javax.swing包中的ImageIcon类来用图片标记组件。

可以调用ImageIcon(String)函数使用计算机中的文件来创建ImageIcon。该方法的参数可以是文件名,也可以是文件的文职和名称,如下:

ImageIcon imgIcn = new ImageIcon(“a1.png”);

ImageIcon imgIcn2 = new ImageIcon(“images/a2.png”);

用于创建图像图标的图形文件必须是GIF、JPEG或PNG格式。大多数为GIF格式,因为它非常适合用于显示只有几种颜色的小图形。

下面是将图标用于标签和按钮之上:

ImageIcon imageIcon1 = newImageIcon("src/guessyourchance/144001617112153.gif");

JLabel label = new JLabel(imageIcon1);

ImageIcon imageIcon2 = newImageIcon("src/guessyourchance/folder/a1.png");

JButton button = newJButton(imageIcon2);

有些组件可同时包含图标和文本,这需要大家自行测试。

下面是工具栏,工具栏是一种将多个组件放在单行或单列中的容器。工具栏是使用JToolBar类创建的,可被设计为允许用户在图形用户界面中移动他们,这被称为“停靠”,而这种组件也被称为“可停靠的工具栏”;

可以调用下面的构造函数之一来创建工具栏:

JToolBar():创建沿水平方向排列组件的工具栏;

JToolBar(int):创建沿指定方向排列的组件的工具栏,指定的方向可以是SwingContants.HORIZONTAL或SwingContants.VERTICAL。

将组件加入到工具栏的方式与加入到其他容器相同:调用add(Component)方法并将要降入的组件作为参数。

对于可停靠的工具栏,必须放在使用BorderLayout布局管理器的容器中,此时容器应只使用其中的两个区域:中央区域和一个方向区域。

下面的语句创建一个可停靠的垂直工具栏:

JPanel panel =new JPanel();
        BorderLayout layout = newBorderLayout();
        panel.setLayout(layout);
        JToolBar toolBar = newJToolBar(SwingConstants.VERTICAL);
       
        ImageIcon imageIcon1 = newImageIcon("src/guessyourchance/144001617112153.gif");
        ImageIcon imageIcon2 = newImageIcon("src/guessyourchance/folder/a1.png");
        JLabel label = new JLabel(imageIcon2);
        JButton button1 = newJButton(imageIcon1);
        JButton button2 = newJButton(imageIcon1);
        toolBar.add(label);
        toolBar.add(button1);
        toolBar.add(button2);
        panel.add(toolBar , BorderLayout.WEST);
        add(panel);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值