📄 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 + -