图形用户界面(一)GUI元素之复选框

 
这个程序显示两个复选框和一个标签。通过改变复选框的状态,进而改变标签上文本的格式,是按粗体、斜体、还是粗斜体的方式显示字体。

 

StyleOptions程序中的GUI设计包括在StyleOptionsPanel类中。复选框由JCheckBox类来表示。当复选框从一种状态变为另一种状态时,产生ItemListener事件,ItemListener接口包含单一的方法itemStateChanged。

 

程序中还用到了Font类。一个Font对象有字体名,字体样式和字体大小组成。

 

当改变一个复选框的状态时,监听器的itemStateChanged方法轮流判定每个复选框,这个方法返回一个布尔值。

 

实际效果如图:

StyleOptions.java

 

import javax.swing.JFrame;

public class StyleOptions {
 public static void main(String[] args) {
  JFrame frame = new JFrame("Style Options");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  frame.getContentPane().add(new StyleOptionsPanel());
  
  frame.pack();
  frame.setVisible(true);
 }
}

 

 

StyleOptionsPanel.java

 

package JCheckBox;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class StyleOptionsPanel extends JPanel{
 private JLabel saying;
 private JCheckBox bold, italic;
 
 public StyleOptionsPanel(){
  saying = new JLabel("Say it with style");
  saying.setFont(new Font("Helvetica", Font.PLAIN, 36));
  
  bold = new JCheckBox("Bold");
  bold.setBackground(Color.green);
  italic = new JCheckBox("Italic");
  italic.setBackground(Color.green);
  
  StyleListener listener = new StyleListener();
  bold.addItemListener(listener);
  italic.addItemListener(listener);
  
  add(saying);
  add(bold);
  add(italic);
  
  setBackground(Color.green);
  setPreferredSize(new Dimension(300, 100));
 }
 
 public class StyleListener implements ItemListener {
  public void itemStateChanged(ItemEvent arg0) {
   int style = Font.PLAIN;
   
   if(bold.isSelected())
    style = Font.BOLD;
   if(italic.isSelected())
    style = Font.ITALIC;

   saying.setFont(new Font("Helvetica",style, 36));
  }
 }
}

 

这里有个缺陷,就是不能同时显示粗斜体,如有人知道,麻烦告诉一下,感激不尽。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值