Java笔记(图形用户界面设计)

显示窗体
顶层窗口(没有包含在其他窗口中的窗口)称为窗体(frame)。
所有的Swing组件必须由事件分派线程配置,这是控制线程,它将鼠标点击和按键等事件传递给用户接口组件。下面的代码段用来执行事件分派线程中的语句:

EventQueue.invokeLater(() ->
  {
     statements
  });

窗体属性
setLocation方法和setBonus方法用于设置窗体的位置;
setIconImage方法用于告诉窗口系统在标题栏、任务切换窗口等位置显示哪个图标;
setTitle方法用于改变标题栏的文字;
setResizable利用一个boolean值确定是否允许用户改变窗体的大小。
在组件中显示信息
paintComponent方法有一个Graphics类型的参数,Graphics对象保存着用于绘制图像和文本的一组设置,例如你设置的字体或当前的颜色。
可以如下创建一个能够进行绘制的组件:

class MyComponent extends JComponent
{
  public void paintComponent(Graphics g)
  {
    code for drawing
  }
}

处理2D图形
Graphics类就包含绘制直线、矩形和椭圆等方法。
要想绘制一个图形,首先要创建一个实现了Shape接口的类的对象,然后调用Graphics2D类的draw方法。例如:

Rectangle2D rect =...;
g2.draw(rect);

使用颜色
使用Graphics2D类的setPaint方法可以为图形上下文上的所有后续的绘制操作选择颜色。
例如:

g2.setPaint(Color.RED);
g2.drawString("Warning!",100,100);

可以用一种颜色填充一个封闭图形的内部。为此,只需要将调用draw替换为调用fill:

Rectangle2D rect = ...;
g2.setPaint(Color.RED);
g2.fill(rect);//fills rect with red

要想用多种颜色绘制,就需要选择一个颜色、绘制图形、再选择另外一种颜色、在绘制图形。

要想设置背景颜色,需要使用Component类中的setBackground方法。Component类是JComponent类的祖先。

var component = new MyComponent();
component.setBackground(Color.PINK);

使用字体

获得字符串的宽度、高度和上坡度:
double stringWidth = bounds.getWidth();
double stringHeight = bounds.getHeight();
double ascent = -bounds.getY();
获得下坡度和行间距:
LineMetrics metrics = f.getLineMetrics(message,context);
float descent= metrics.getDescent();
float leading = metrics.getLeading();

显示图像
可以使用ImageIcon类从文件读取图像:

Image image = new ImageIcon(filename).getImage();

事件处理

基本事件处理概念
事件源(如按钮或滚动条)有一些方法,允许你注册事件监听器,这些对象会对事件做出所需的响应。
通知一个事件监听器发生了某个事件时,这个事件的相关信息会封装在一个事件对象(event object)中。在Java中,所有的事件对象最终都派生于java.util.EventObject类。当然,每个事件类型还有子类,例如,ActionEvent和WindowEvent。

综上,下面给出AWT事件处理机制的概要说明:
事件监听器是一个实现了监听器接口(listener interface)的类实例。
事件源对象能够注册监听器对象并向其发送事件对象。
当事件发生时,事件源将事件对象发送给所有注册的监听器。
监听器对象再使用事件对象中的信息决定如何对事件做出响应。

下面是指定监听器的一个实例:

ActionListener listener = ...;
var button = new JButton("OK");
button.addActionListener(listener);

要实现ActionListener接口,监听器必须有一个名为actionPerformed的方法,该方法接受一个ActionEvent对象作为参数。

class MyListener implements ActionListener
{
  ...
  public void actionPerformed(ActionEvent event)
  {
    //reaction to button click goes here
    ...
  }
}

实例:处理按钮点击事件
想要创建一个按钮,要在按钮构造器中指定一个标签字符串或一个图标,或者两项都指定。下面是两个实例:

var yellowButton = new JButton("Yellow");
var blueButton = new JButton(new ImageIcon("blue-ball.gif");
调用add方法将按钮添加到面板中:
var yellowButton = new JButton("Yellow");
var blueButton = new JButton("Blue");
var redButton = new JButton("RED");

buttonPanel.add(yellowButton);
buttonPanel.add(blueButton);
buttonPanel.add(redButton);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值