📄 menufont.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MenuFont extends JDialog
implements ItemListener,
ActionListener,
TextListener {
CheckboxGroup gp;
Checkbox plain, bold, italic, boldItalic;
Choice fontNameChoice;
TextField fontSizeTextField;
List fontSizeList;
TextField fontTextField;
Button fontButtonOk;
Button fontButtonCancel;
int fontStyleInt = 0;
boolean changed = true;
int fontSizeMin = 10, fontSizeMax = 36, fontSizeChangedStep = 2;
MenuFont(Frame frame, boolean modal) {
super(frame, modal);
}
public Font myLayout(Font taFont) {
this.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = 1;
gbc.gridheight =1;
gbc.weightx = 1;
gbc.weighty = 1;
gbc.fill = gbc.HORIZONTAL;
gbc.anchor = gbc.CENTER;
// a TextField for font size
fontSizeTextField = new TextField(taFont.getSize() + "",14);
fontSizeTextField.selectAll();
fontSizeTextField.addTextListener(this);
gbc.gridx = 0;
gbc.gridy = 1;
getContentPane().add(fontSizeTextField, gbc);
//CheckboxGroup for font style
gp = new CheckboxGroup();
if(taFont.getStyle() == 0)
plain = new Checkbox("PLAIN", true, gp);
else
plain = new Checkbox("PLAIN", false, gp);
plain.addItemListener(this);
if(taFont.getStyle() == 1)
bold = new Checkbox("BOLD", true, gp);
else
bold = new Checkbox("BOLD", false, gp);
bold.addItemListener(this);
if(taFont.getStyle() == 2)
italic = new Checkbox("ITALIC", true, gp);
else
italic = new Checkbox("ITALIC", false, gp);
italic.addItemListener(this);
if(taFont.getStyle() == 3)
boldItalic = new Checkbox("BOLDITALIC", true, gp);
else
boldItalic = new Checkbox("BOLDITALIC", false, gp);
boldItalic.addItemListener(this);
gbc.gridx = 0;
gbc.gridy = 0;
getContentPane().add(plain, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
getContentPane().add(bold, gbc);
gbc.gridx = 2;
gbc.gridy = 0;
getContentPane().add(italic, gbc);
gbc.gridx = 3;
gbc.gridy = 0;
getContentPane().add(boldItalic, gbc);
// a TextField + List for font size
//fontSizeTextField = new TextField(taFont.getSize() + "",14);
//fontSizeTextField.selectAll();
//fontSizeTextField.addTextListener(this);
//gbc.gridx = 0;
//gbc.gridy = 1;
//add(fontSizeTextField, gbc);
fontSizeList = new List(4, false);
fontSizeList.addItemListener(this);
int indexOfList = 0;
boolean breakHere = false;
for(int i = fontSizeMin; i <= fontSizeMax; i = i + fontSizeChangedStep) {
if(!breakHere) {
if(i != taFont.getSize()) {
indexOfList++;
}
else {
breakHere = true;
}
}
fontSizeList.add(i + "");
}
if(indexOfList < 0 ||
indexOfList > (fontSizeMax - fontSizeMin)/fontSizeChangedStep + 1)
fontSizeList.select(0);
else
fontSizeList.select(indexOfList);
gbc.gridx = 0;
gbc.gridy = 2;
getContentPane().add(fontSizeList, gbc);
//Choice for font name
gbc.gridx = 1;
gbc.gridy = 1;
fontNameChoice = new Choice();
fontNameChoice.addItemListener(this);
fontNameChoice.add("Serif");
fontNameChoice.add("Courier");
fontNameChoice.add("Helvetica");
fontNameChoice.add("TimesRoman");
fontNameChoice.select(taFont.getName());
getContentPane().add(fontNameChoice, gbc);
//two Button Ok Cancel
fontButtonOk = new Button("Ok");
fontButtonOk.addActionListener(this);
gbc.gridx = 2;
gbc.gridy = 2;
gbc.fill = gbc.NONE;
getContentPane().add(fontButtonOk, gbc);
fontButtonCancel = new Button("Cancel");
fontButtonCancel.addActionListener(this);
gbc.gridx = 3;
gbc.gridy = 2;
getContentPane().add(fontButtonCancel, gbc);
//a TextField for demo the font
fontTextField = new TextField("Java awt");
fontTextField.setEditable(false);
fontTextField.setSize(90, 60);
fontTextField.setFont(taFont);
gbc.weightx = 100;
gbc.weighty = 230;
gbc.gridx = 2;
gbc.gridy = 1;
gbc.gridwidth = 2;
gbc.gridheight = 1;
gbc.fill = gbc.BOTH;
getContentPane().add(fontTextField, gbc);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
this.setLocation(120, 120);
this.setResizable(false);
this.setSize(480,160);
this.setVisible(true);
if(changed)
return returnFont();
else
return taFont;
}//end of myLayout
//ItemListener
public void itemStateChanged(ItemEvent ie) {
if(ie.getSource() == plain) {
updateFontTextField();
}
else if(ie.getSource() == bold) {
updateFontTextField();
}
else if(ie.getSource() == italic) {
updateFontTextField();
}
else if(ie.getSource() == boldItalic) {
updateFontTextField();
}
else if(ie.getSource() == fontNameChoice) {
updateFontTextField();
}
else if(ie.getSource() == fontSizeList) {
List lf = (List)ie.getSource();
fontSizeTextField.setText(lf.getSelectedItem());
updateFontTextField();
}
}//end of ItemListener
//TextListener
public void textValueChanged(TextEvent e) {
int indexOfList = 0;
boolean breakHere = false;
int thisNum = 0;
for(int i = fontSizeMin; i <= fontSizeMax; i = i + fontSizeChangedStep) {
if(!breakHere) {
try {
thisNum = Integer.parseInt(fontSizeTextField.getText());
} catch(NumberFormatException nfe) {
thisNum = 0;
}
if(i != thisNum) {
indexOfList++;
}
else {
breakHere = true;
}
}
}
if(indexOfList < 0 ||
indexOfList > (fontSizeMax - fontSizeMin)/fontSizeChangedStep + 1)
fontSizeList.select(0);
else
fontSizeList.select(indexOfList);
updateFontTextField();
}//end of TextListener
//ActionListener
public void actionPerformed(ActionEvent ae) {
if(ae.getSource() == fontButtonOk) {
changed = true;
dispose();
}
else if(ae.getSource() == fontButtonCancel) {
changed = false;
dispose();
}
}//end of ActionListener
public Font returnFont() {
updateFontTextField();
return new Font(fontNameChoice.getSelectedItem(),
fontStyleInt,
Integer.parseInt(fontSizeList.getSelectedItem()));
}
private void updateFontTextField() {
if(gp.getSelectedCheckbox().getLabel().equals("PLAIN")){
fontStyleInt = Font.PLAIN;
}
else if(gp.getSelectedCheckbox().getLabel().equals("BOLD")){
fontStyleInt = Font.BOLD;
}
else if(gp.getSelectedCheckbox().getLabel().equals("ITALIC")){
fontStyleInt = Font.ITALIC;
}
else if(gp.getSelectedCheckbox().getLabel().equals("BOLDITALIC")){
fontStyleInt = Font.BOLD + Font.ITALIC;
}
fontTextField.setFont(new Font(fontNameChoice.getSelectedItem(),
fontStyleInt,
Integer.parseInt(fontSizeList.getSelectedItem())));
}
}//end of class MenuFont
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -