写了一个例子程序,不过感觉很让人抓狂的一点是:必须手动调整尺寸构造布局,很不爽...不知道有什么办法没。
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class radioButton extends JFrame{
private Container container;
private JRadioButton plainRadioButton,boldRadioButton,
italicRadioButton,boldAndItalicRadioButton;
private Font plain,bold,italic,boldAndItalic;
private JTextField txt;
private ButtonGroup radioGroup;
//private RadioButtonHandler handler;
//constructor
radioButton(){
super("a program displaying radioButton written by lwfcgz@csdn");
container=getContentPane();
container.setLayout(new FlowLayout());
//add text field
txt=new JTextField();
//it is very boring to adjust the width and height by hand
txt.setText("Watch the font style change ");
//txt.setBounds(5, 5, 200, 10);
container.add(txt);
//create new radio button
plainRadioButton=new JRadioButton("plain",true);
container.add(plainRadioButton);
boldRadioButton=new JRadioButton("bold",false);
container.add(boldRadioButton);
italicRadioButton=new JRadioButton("italic",false);
container.add(italicRadioButton);
boldAndItalicRadioButton=new JRadioButton("bold&italic",false);
container.add(boldAndItalicRadioButton);
//add radio button into radio group
radioGroup=new ButtonGroup();
radioGroup.add(plainRadioButton);
radioGroup.add(boldRadioButton);
radioGroup.add(italicRadioButton);
radioGroup.add(boldAndItalicRadioButton);
//create new font
plain=new Font("Serif",Font.PLAIN,14);
bold= new Font("Serif",Font.BOLD,14);
italic=new Font("Serif",Font.ITALIC,14);
//it is wonderful to concatenate two font using equal sign
boldAndItalic=new Font("Serif",Font.ITALIC+Font.BOLD,14);
//add item listener
plainRadioButton.addItemListener(new RadioButtonHandler(plain));
boldRadioButton.addItemListener(new RadioButtonHandler(bold));
italicRadioButton.addItemListener(new RadioButtonHandler(italic));
boldAndItalicRadioButton.addItemListener(new RadioButtonHandler(boldAndItalic));
setSize(300,100);
setVisible(true);
}
private class RadioButtonHandler implements ItemListener{
private Font tmpFont;
//constructor
RadioButtonHandler(Font f){
tmpFont=f;
}
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
txt.setFont(tmpFont);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
radioButton radio=new radioButton();
radio.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}