?? fontdialog.java
字號:
package cqj.jar.com;
//import java.awt.Dialog;
//import java.awt.Dimension;
//import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
//import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
//import java.awt.event.WindowAdapter;
//import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class FontDialog extends JDialog implements FontConstants {
public JLabel labelFont;
public JLabel labelStyle;
public JLabel labelSize;
public JTextField fieldFont;
public JTextField fieldStyle;
public JTextField fieldSize;
public JList listFont; //字體
public JList listStyle; //字形
public JList listSize; //大小
//static final String[] strFont = {"宋體","楷體","華文楷體","華文中宋","華文細黑","新宋體","綠書","微軟雅黑"};
//static final String[] strStyle = {"常規","粗體","斜體","粗斜體"};
//static final String[] strSize = {"12","14","16","20","24","30","36","50","75"};
public JButton butConfirm;
public JButton butCancel;
public JLabel labelForExample;
public FontDialog(Frame frame, String title, int width, int height) {
super(frame, title);
this.width = width;
this.height = height;
setInit();
initComponents();
addComListener();
updateFiledFont();
this.setVisible(true);
}
//@Override
public void initComponents() {
//初始化對話框中的組件
//初始化說明標簽
labelFont = new JLabel("字體: ");
labelStyle = new JLabel("字形: ");
labelSize = new JLabel("大小: ");
//labelFont.setSize(10, 10);
//初始化文本區
fieldFont = new JTextField("宋體");
fieldStyle = new JTextField("常規");
fieldSize = new JTextField(defaulstSize);
//設置文本區列數 10,8,5
fieldFont.setColumns(15);
fieldStyle.setColumns(10);
fieldSize.setColumns(7);
//初始化列表
listFont = new JList(strFont);
listStyle = new JList(strStyle);
listSize = new JList(strSize);
//設置初始化列表選中值
listFont.setSelectedIndex(defaulstFontIndex);
listStyle.setSelectedIndex(defaulstStyleIndex);
listSize.setSelectedIndex(defaulstSizeIndex);
//設置各個列表可見行數
listFont.setVisibleRowCount(6);
listStyle.setVisibleRowCount(6);
listSize.setVisibleRowCount(6);
//設置各個列表固定單元格寬度
//未加這之前UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
//96,88,41
listFont.setFixedCellWidth(83);
listStyle.setFixedCellWidth(69);
listSize.setFixedCellWidth(33);
//對各個列表封閉上滾動條
JScrollPane scrollPane1 = new JScrollPane(listFont);
JScrollPane scrollPane2 = new JScrollPane(listStyle);
JScrollPane scrollPane3 = new JScrollPane(listSize);
butConfirm = new JButton("確定");
butCancel = new JButton("取消");
JPanel textControlsPane = new JPanel();
textControlsPane.setMinimumSize(new Dimension(350,200));
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
textControlsPane.setLayout(gridbag);
JLabel[] labels = {labelFont, labelStyle, labelSize};
JTextField[] textFields = {fieldFont, fieldStyle, fieldSize};
JList[] lists = {listFont, listStyle, listSize};
JScrollPane[] scrollPanes = {scrollPane1, scrollPane2, scrollPane3};
JButton[] buttons = {butConfirm, butCancel};
//add(scrollPane1, BorderLayout.NORTH);
//addLabelTextLists(labels, textFields, lists, buttons, gridbag, textControlsPane);
addLabelTextScrolls(labels, textFields, scrollPanes, buttons, gridbag, textControlsPane);
labelForExample = new JLabel("陳求江", SwingConstants.LEFT);
labelForExample.setMaximumSize(new Dimension(300,50));
//labelForExample.setAlignmentX(SwingConstants.LEFT);
JPanel panelExample = new JPanel();
panelExample.setMaximumSize(new Dimension(350,60));
panelExample.add(labelForExample, BorderLayout.CENTER);
panelExample.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("樣式舉例"),
BorderFactory.createEmptyBorder(5,5,5,5)));
this.setLayout(new BorderLayout());
Container contentPane = this.getContentPane();
//contentPane.add(scrollPane1, BorderLayout.NORTH);
contentPane.add(textControlsPane, BorderLayout.NORTH);
contentPane.add(panelExample, BorderLayout.CENTER);
setExampleFont();
//this.setVisible(true);
}
private void addLabelTextScrolls(JLabel[] labels,
JTextField[] textFields,
JScrollPane[] lists,
JButton[] buttons,
GridBagLayout gridbag,
Container container) {
GridBagConstraints c = new GridBagConstraints();
//c.anchor = GridBagConstraints.EAST;
//int numLabels = labels.length;
//c.weightx = 0.0;
//gridwidth:指定組件的顯示區域中行(針對 gridwidth)或列(針對 gridheight)中的單元數。默認值為 1。
//使用 GridBagConstraints.REMAINDER 指定組件的顯示區域為從 gridx 到該行(針對 gridwidth)中的最后一個單元
//GridBagConstraints.RELATIVE 指定組件的顯示區域為從 gridx 到其所在行(針對 gridwidth)的倒數第二個單元
//c.gridwidth = 1;
JLabel lab1 = new JLabel(" ");
//JLabel lab2 = new JLabel(" ");
c.gridx = 0;
c.weightx = 1.0;
container.add(labels[0], c);
c.gridx = 1;
container.add(labels[1], c);
c.gridwidth = GridBagConstraints.RELATIVE;
c.gridx = 2;
container.add(labels[2], c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.gridx = 3;
container.add(lab1, c);
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 1;
container.add(textFields[0], c);
c.gridx = GridBagConstraints.RELATIVE;
container.add(textFields[1], c);
c.gridwidth = GridBagConstraints.RELATIVE;
c.gridx = 2;
container.add(textFields[2], c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.gridx = 3;
container.add(buttons[0], c);
///*
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 1;
container.add(lists[0], c);
c.gridx = 1;
c.gridwidth = 1;
container.add(lists[1], c);
c.gridx = 2;
c.gridwidth = GridBagConstraints.RELATIVE;
container.add(lists[2], c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.gridx = 3;
container.add(buttons[1], c);
}
//@Override
public void addComListener() {
//添加組件的事件監聽
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
My_ListSelectedListener myListener = new My_ListSelectedListener();
listFont.addListSelectionListener(myListener);
listStyle.addListSelectionListener(myListener);
listSize.addListSelectionListener(myListener);
}
class My_ListSelectedListener implements ListSelectionListener {
public void valueChanged(ListSelectionEvent e) {
//int firstIndex = e.getFirstIndex();
//int lastIndex = e.getLastIndex();
JList changedList = (JList)e.getSource();
String selectedValue = ""+changedList.getSelectedValue();
if(changedList == listFont) {
//System.out.println("source : listFont");
//System.out.println("value: " + selectedValue);
setFieldFont(selectedValue);
String fontStr = ""+selectedValue;
boolean isEn = M_StringConstants.isEn(fontStr.charAt(0));
if(!isEn) {
//若是中文
labelForExample.setText("陳求江");
}
else {
labelForExample.setText("CcQqJj");
}
}
else if(changedList == listStyle) {
//System.out.println("source : listStyle");
setFieldStyle(selectedValue);
}
else {
//System.out.println("source : listSize");
setFieldSize(selectedValue);
}
setExampleFont();
//System.out.println("firstIndex :" + firstIndex);
//System.out.println("lastIndex :" + lastIndex);
//System.out.println("source :" + e.getSource());
}
}
public void setInit() {
setCenter();
this.setLayout(new FlowLayout());
this.setResizable(false);
}
//居中顯示
public void setCenter(){
Toolkit t = Toolkit.getDefaultToolkit();
Dimension screen_Size = t.getScreenSize();
Dimension dialog_Size = new Dimension(width,height);
this.setPreferredSize(dialog_Size);
int x = (screen_Size.width-width)/2;
int y = (screen_Size.height-height)/2;
setBounds(x, y, width, height);
}
//設置樣例的顯示
public void setExampleFont() {
labelForExample.setFont(getFont());
}
//更新TextField中的樣式
public void updateFiledFont() {
fieldFont.setText(getFieldFont());
fieldStyle.setText(getFieldStyle());
fieldSize.setText(getFieldSize());
}
//public abstract String getTextField();
public String getFieldFont() {
return ""+listFont.getSelectedValue();
}
public void setFieldFont(String field) {
fieldFont.setText(field);
}
public String getFieldStyle() {
return ""+listStyle.getSelectedValue();
}
public void setFieldStyle(String field) {
fieldStyle.setText(field);
}
public String getFieldSize() {
return ""+listSize.getSelectedValue();
}
public void setFieldSize(String field) {
fieldSize.setText(field);
}
public static int indexToFont(int index) {
int style = Font.PLAIN;
switch (index) {
case 0: //常規
break;
case 1: //粗體
style = Font.BOLD;
break;
case 2: //斜體
style = Font.ITALIC;
break;
case 3: //粗斜體
style = Font.BOLD|Font.ITALIC;
break;
default:
break;
}
return style;
}
public Font getFont() {
String name = this.getFieldFont();
int style = indexToFont(listStyle.getSelectedIndex());
int size = Integer.parseInt(this.getFieldSize());
Font newFont = new Font( name, style, size);
return newFont;
}
public int width = 300;
public int height = 100;
//public boolean isChecked = false;
/**
* @param args
*/
/*
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {}
//new demo();
//350,350
new FontDialog(null, "字體", 310,300);
}
*/
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -