第二次作业
2016-03-17 19:14
316 查看
我这周做的这个字体选择框主要使用的组件分别是标签(JLabel)、文本框(JTextField)、列表框(JList),中间容器主要使用了面板(JPanel)和滚动面板(JScrollPane)
标签(JLabel):private JLabel nameLbl,styleLbl,sizeLbl;
styleLbl = new JLabel("字形");
文本框(JTextField):private JTextField nameText,styleText,sizeText;
styleText = new JTextField("正常");
列表框(JList):private JList nameList,styleList,sizeList;
styleList =new JList(style);
滚动面板(JScrollPane): private JScrollPane nameSPane,styleSPane,sizeSPane;
styleSPane = new JScrollPane(styleList);
通过查阅API文档和相关资料学习了获取系统所安装的字体名称,以便显示在第一个类表框中,代码如下
GraphicsEnvironment eq = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] availableFonts = eq.getAvailableFontFamilyNames();
代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.;
import javax.swing.event.;
public class fontDialog extends JDialog implements ActionListener,ListSelectionListener{
public static final int Cancle = 0;
public static final int OK = 1;
public static final String [] style = {"正常","斜体","粗体","粗斜体"};
public static final String [] size = {"8","9","12","14","22","24","72"};
private Font userFont = null;
private int userSelect = Cancle;
private JFrame parent = null;
private Container con;
private JScrollPane nameSPane,styleSPane,sizeSPane;
private JPanel panel[];
private JLabel nameLbl,styleLbl,sizeLbl;
private JTextField nameText,styleText,sizeText;
private JList nameList,styleList,sizeList;
private JButton OKbtn,cancleBtn;
private fontDialog myFontDialog=null;
private JTextArea text;
}
程序运行效果图:
我的照片:
标签(JLabel):private JLabel nameLbl,styleLbl,sizeLbl;
styleLbl = new JLabel("字形");
文本框(JTextField):private JTextField nameText,styleText,sizeText;
styleText = new JTextField("正常");
列表框(JList):private JList nameList,styleList,sizeList;
styleList =new JList(style);
滚动面板(JScrollPane): private JScrollPane nameSPane,styleSPane,sizeSPane;
styleSPane = new JScrollPane(styleList);
通过查阅API文档和相关资料学习了获取系统所安装的字体名称,以便显示在第一个类表框中,代码如下
GraphicsEnvironment eq = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] availableFonts = eq.getAvailableFontFamilyNames();
代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.;
import javax.swing.event.;
public class fontDialog extends JDialog implements ActionListener,ListSelectionListener{
public static final int Cancle = 0;
public static final int OK = 1;
public static final String [] style = {"正常","斜体","粗体","粗斜体"};
public static final String [] size = {"8","9","12","14","22","24","72"};
private Font userFont = null;
private int userSelect = Cancle;
private JFrame parent = null;
private Container con;
private JScrollPane nameSPane,styleSPane,sizeSPane;
private JPanel panel[];
private JLabel nameLbl,styleLbl,sizeLbl;
private JTextField nameText,styleText,sizeText;
private JList nameList,styleList,sizeList;
private JButton OKbtn,cancleBtn;
private fontDialog myFontDialog=null;
private JTextArea text;
public fontDialog(){ this(null); } public fontDialog(JFrame owner) { // TODO Auto-generated constructor stub super(owner,true); parent = owner; setTitle("字体"); con = getContentPane(); //设置中间容器的布局,从上到下排列 BoxLayout box = new BoxLayout(con,BoxLayout.Y_AXIS); con.setLayout(box); panel = new JPanel[4]; for(int i = 0;i<3;i++){ panel[i] = new JPanel(); panel[i].setLayout(new GridLayout(1,3)); panel[i].setBackground(Color.GREEN); } panel[3] = new JPanel(); panel[3].setLayout(new FlowLayout()); //创建第一行的3个标签放在第一个panel中 nameLbl = new JLabel("字体"); styleLbl = new JLabel("字形"); sizeLbl = new JLabel("大小"); panel[0].add(nameLbl); panel[0].add(styleLbl); panel[0].add(sizeLbl); //创建第二行的3个文本框放在第二个panel中 nameText = new JTextField("宋体"); nameText.setColumns(5); //设置只读 nameText.setEditable(false); nameText.setBackground(Color.YELLOW); styleText = new JTextField("正常"); styleText.setColumns(5); styleText.setEditable(false); styleText.setBackground(Color.YELLOW); text = new JTextArea(); sizeText = new JTextField("12"); sizeText.setColumns(5); sizeText.setEditable(false); sizeText.setBackground(Color.YELLOW); panel[1].add(nameText); panel[1].add(styleText); panel[1].add(sizeText); //获取系统所安装的字体名称,以便显示在第一个类表框中 GraphicsEnvironment eq = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] availableFonts = eq.getAvailableFontFamilyNames(); nameList =new JList(availableFonts); nameList.addListSelectionListener(this);//事件监听器 nameSPane = new JScrollPane(nameList); nameList.setBackground(Color.magenta); styleList =new JList(style); styleList.addListSelectionListener(this);//事件监听器 styleSPane = new JScrollPane(styleList); styleList.setBackground(Color.magenta); sizeList =new JList(size); sizeList.addListSelectionListener(this);//事件监听器 sizeSPane = new JScrollPane(sizeList); sizeList.setBackground(Color.magenta); panel[2].add(nameSPane); panel[2].add(styleSPane); panel[2].add(sizeSPane); OKbtn = new JButton("确定"); OKbtn.addActionListener(this); cancleBtn = new JButton("取消"); cancleBtn.addActionListener(this); panel[3].add(OKbtn); panel[3].add(cancleBtn); for(int i=0;i<4;i++){ con.add(panel[i]); } showFontDialog(); //parent.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String mse = ""; int styleIndex = Font.PLAIN,fontSize; if(e.getSource() == OKbtn){ if(styleText.getText().equals("正常")) styleIndex = Font.PLAIN; if(styleText.getText().equals("斜体")) styleIndex = Font.ITALIC; if(styleText.getText().equals("粗斜体")) styleIndex = Font.BOLD; fontSize = Integer.parseInt(sizeText.getText()); userFont = new Font(nameText.getText(),styleIndex,fontSize); userSelect = OK; mse = mse+" "+nameText.getText()+" "+sizeText.getText()+" "+styleText.getText(); setVisible(false); JOptionPane.showMessageDialog(parent, "你选择了"+mse); } else{ userSelect = Cancle; setVisible(false); } } @Override public void valueChanged(ListSelectionEvent e) { // TODO Auto-generated method stub if(e.getSource() ==nameList) nameText.setText((String)nameList.getSelectedValue()); if(e.getSource() ==styleList) styleText.setText((String)styleList.getSelectedValue()); if(e.getSource() ==sizeList) sizeText.setText((String)sizeList.getSelectedValue()); } public int showFontDialog(){ setSize(300,300); int x,y; if(parent !=null){ x=parent.getX()+30; y=parent.getY()+30; }else{ x = 150; y = 100; } setLocation(new Point(x,y)); setVisible(true); return userSelect; } public Font getFont(){ return userFont; } void doChangeFont(){ if(myFontDialog ==null) myFontDialog = new fontDialog(); if(((fontDialog) myFontDialog).showFontDialog() == fontDialog.OK) text.setFont(myFontDialog.getFont()); } public static void main(String[] args) { new fontDialog(); }
}
程序运行效果图:
我的照片:
相关文章推荐
- centos7安装docker
- 欧拉与鸡蛋
- Tomcat 的热部署和加载
- Android新手入门2016(9)--ListView之SimpleAdapter和SimpleCursorAdapter
- 动态导入(import)和静态导入(import)的区别
- 读书笔记-js
- Python/Ruby/Go/Node 之四国大战
- 【tyvj1038】忠诚
- linux基础正则表达式
- IOS 渐变的图层,CAGradientLayer
- 关于svn hooks拦截设置
- Android音频底层调试-基于tinyalsa
- 将博客搬至CSDN
- STM32F103 与 STM32F407引脚兼容问题
- ZOJ 1100 Mondriaan's Dream
- 机房重构打包
- Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建
- qt中文乱码问题
- 读书笔记-设计模式
- 选择结构与循环结构