這個程式顯示兩個複選框和一個标簽。通過改變複選框的狀态,進而改變标簽上文本的格式,是按粗體、斜體、還是粗斜體的方式顯示字型。
StyleOptions程式中的GUI設計包括在StyleOptionsPanel類中。複選框由JCheckBox類來表示。當複選框從一種狀态變為另一種狀态時,産生ItemListener事件,ItemListener接口包含單一的方法itemStateChanged。
程式中還用到了Font類。一個Font對象有字型名,字型樣式和字型大小組成。
當改變一個複選框的狀态時,監聽器的itemStateChanged方法輪流判定每個複選框,這個方法傳回一個布爾值。
實際效果如圖:
StyleOptions.java
import javax.swing.JFrame;
public class StyleOptions {
public static void main(String[] args) {
JFrame frame = new JFrame("Style Options");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new StyleOptionsPanel());
frame.pack();
frame.setVisible(true);
}
}
StyleOptionsPanel.java
package JCheckBox;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class StyleOptionsPanel extends JPanel{
private JLabel saying;
private JCheckBox bold, italic;
public StyleOptionsPanel(){
saying = new JLabel("Say it with style");
saying.setFont(new Font("Helvetica", Font.PLAIN, 36));
bold = new JCheckBox("Bold");
bold.setBackground(Color.green);
italic = new JCheckBox("Italic");
italic.setBackground(Color.green);
StyleListener listener = new StyleListener();
bold.addItemListener(listener);
italic.addItemListener(listener);
add(saying);
add(bold);
add(italic);
setBackground(Color.green);
setPreferredSize(new Dimension(300, 100));
}
public class StyleListener implements ItemListener {
public void itemStateChanged(ItemEvent arg0) {
int style = Font.PLAIN;
if(bold.isSelected())
style = Font.BOLD;
if(italic.isSelected())
style = Font.ITALIC;
saying.setFont(new Font("Helvetica",style, 36));
}
}
}
這裡有個缺陷,就是不能同時顯示粗斜體,如有人知道,麻煩告訴一下,感激不盡。