用户在对话框下拉列表中选择的为显示文本区中的文本
来源:互联网 发布:淘宝怎么才能搜到黄盘 编辑:程序博客网 时间:2024/05/22 00:18
问题描述:编写一个FontFamily类,该类对象获取当前机器可用的全部字体名称。编写一个对话框FontDialog,该对话框是模式对话框,采用BorderLayout布局,包含一个JComboBox放在北面显示全部字体的名称,包含一个JLabel放在中间,显示字体的效果,包含两个按钮放在南面,点击YES,在对话框所依赖的窗口中设置字体的效果,点击Cancle取消。编写一个窗口FrameHaveDialog,该窗口有一个按钮和一个文本区,当单击该按钮时,弹出对话框FontDialog,然后根据用户在对话框下拉列表中选择的为显示文本区中的文本。最后编写一个程序执行入口进行测试。
*代码部分:
FontFamily:
- package lz_13w;
- import java.awt.Font;
- import java.awt.GraphicsEnvironment;
- /*
- * FontFamily:获取系统中所有字体GraphicEnvironment这是一个抽象类,不能直接实例化。
- * getAvailableFontFamilyNames():返回一个包含此 GraphicsEnvironment 中所有字体系列名称的数组
- * String[]fontName数组获得字体名称字符串数组;
- */
- public class FontFamily {
- String[] fontName;
- FontFamily()
- {
- GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
- fontName = e.getAvailableFontFamilyNames();
- }
- }
FontDialog:
- package lz_13w;
- import java.awt.BorderLayout;
- import java.awt.Dialog;
- import java.awt.Font;
- import java.awt.Frame;
- import java.awt.Panel;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.ItemEvent;
- import java.awt.event.ItemListener;
- import javax.swing.JButton;
- import javax.swing.JComboBox;
- import javax.swing.JFileChooser;
- import javax.swing.JLabel;
- /*
- *弹出的有模式对话框的设置: 通过一个循环实现对JComboBox中下拉项的添加;
- *其中的Font myFont用于获取label中的字体;
- *处理ActionPreformed事件:不论触发事件的是YES还是Cancel都是将对话框的可见性SetVisible(false)设为false,只不过在
- *处理YES时要将myFont赋值为label的字体----(用于在主窗口中的输入数据字体改变时使用)
- *处理itemStateChanged(ItemEvent e):用i 获得当前选中的下拉项的索引:
- *label.setFont(new Font(fontFamily.fontName[i], Font.PLAIN, this.getFont().getSize()));
- *通过setFont()设置字体,通过new Font具体改变字体,其中参数分别是: 字体名称、 Font 的样式常量、字体大小。
- */
- public class FontDialog extends Dialog implements ActionListener, ItemListener{
- Panel panelSouth;
- JComboBox box;
- JLabel label;
- JButton button1, button2;
- FontFamily fontFamily;
- Font myFont;
- public FontDialog(Frame f, String s, boolean b)
- {
- super(f, s, b);
- setTitle("字体选择窗口");
- setLayout(new BorderLayout());
- fontFamily = new FontFamily();
- panelSouth = new Panel();
- button1 = new JButton("YES");
- button1.addActionListener(this);
- button2 = new JButton("Cancle");
- button2.addActionListener(this);
- panelSouth.add(button1);
- panelSouth.add(button2);
- box = new JComboBox();
- for(int i = 0; i < fontFamily.fontName.length; i++)
- {
- box.addItem(fontFamily.fontName[i]);
- }
- box.addItemListener(this);
- label = new JLabel("Choice your font! 选择你的字体!");
- add(box, BorderLayout.NORTH);
- add(label, BorderLayout.CENTER);
- add(panelSouth, BorderLayout.SOUTH);
- setBounds(60, 60, 300, 300);
- setVisible(false);
- }
- public void actionPerformed(ActionEvent e) {
- if(e.getSource() == button1)
- {
- myFont = label.getFont();
- setVisible(false);
- }
- else
- {
- setVisible(false);
- }
- }
- public void itemStateChanged(ItemEvent e) {
- int i = box.getSelectedIndex();
- label.setFont(new Font(fontFamily.fontName[i], Font.PLAIN, this.getFont().getSize()));
- }
- }
FrameHaveDialog:
- package lz_13w;
- import java.awt.BorderLayout;
- import java.awt.Frame;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JTextArea;
- /*
- * 实现窗口:actionPreformed():当按button时触发弹出有模式对话框,当进行选择后将label的字体效果即myFont进行当前输入字符的字体改变;
- * 因为若点击对话框中的Cancel和系统默认字体一致,不改变字体;
- */
- public class FrameHaveDialog extends JFrame implements ActionListener{
- FontDialog dialog;
- JButton fontButton;
- JTextArea text;
- public FrameHaveDialog() {
- dialog = new FontDialog(this, "字体选择", true);
- dialog.setBounds(450, 200, 240, 250);
- fontButton = new JButton("选字体");
- fontButton.addActionListener(this);
- text = new JTextArea();
- setLayout(new BorderLayout());
- setVisible(true);
- setBounds(450, 200, 300, 350);
- add(fontButton, BorderLayout.NORTH);
- add(text, BorderLayout.CENTER);
- setTitle("我的字体框");
- setExtendedState(Frame.MAXIMIZED_VERT);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- public void actionPerformed(ActionEvent e) {
- dialog.setVisible(true);
- text.setFont(dialog.myFont);
- }
- }
TestDialog:
- package lz_13w;
- public class TestDialog {
- /**
- * @param args
- */
- public static void main(String[] args) {
- new FrameHaveDialog();
- }
- }
测试结果:
心得经验:
一、关键内容已经在注释中写明:关键是FontFamily的使用,以及触发事件的处理,再就是对于字体修改;
0 0
- 用户在对话框下拉列表中选择的为显示文本区中的文本
- Java程序设计(十五)----用户在对话框下拉列表中选择的为显示文本区中的文本
- aspxcombobox 中通过value来显示下拉框中的文本
- 如何为下拉列表的文本复制与如何得到下拉列表选中项的文本值
- 在消息对话框中显示文本之JOptionPane类
- 为对话框中的静态文本,设置不同的字体
- 在文本框中显示文本的内容
- 1,编写程序,当用户在文本框中输入内容之后,单机不同的按钮,能够把文半框中的内容粘贴到文本区中。“重置”按钮实现将文本框和文本区中的内容清空。界面上的文本区只能显示内容,不能让用户输入文本。运行结果
- select 下拉列表获取选中的文本
- CSS选择框、下拉列表、文本域、表格
- 在WPF的MVVM框架中获取下拉选择列表中的选中项
- 建立一个班级下拉式列表,列表项中有2004(1)班,2004(2)班,2004(3)班和2004(4)班。当点击某个选项时,将其成绩单显示在文本区中。
- 文本对话框的显示与保存
- Matlab GUI,输入文本对话框,选择文件对话框,列表(多选)对话框
- 具有选择功能的对话框(下拉列表对话框)
- .net中把多余的文本显示为...
- winform在richTextBox中查找并选择指定的文本
- 如何获取在编辑框中选择的文本内容
- 剑指offer(34):把数组排成最小的数
- makefile-2
- kubernetes理论之kubernetes组成
- AOJ 0118 Property Distribution (果园分类)
- opencv Mat详解
- 用户在对话框下拉列表中选择的为显示文本区中的文本
- 【排序算法】冒泡排序原理及Java实现
- HTML编码规范
- OLAP(联机分析处理)和OLTP (联机事务处理)的区别
- java---打印流
- HDOJ 5671 Matrix
- poj1062 昂贵的聘礼
- 知乎小报开发总结
- Android基础第一节课