题目:
任选一种Swing组件
1、介绍这个Swing组件的使用(get\set)
2、当这个Swing组件作为事件源时,用户可以怎样和这个事件进行交互(键盘,鼠标的交互都可以)
3、编写范例代码说明并且使用文字进行说明
JColorChooser 类颜色选择器提供了一个窗格设计,让用户操作和选择颜色的控制。
1、构造器,创建一个默认初始颜色为白色的颜色选择器。
public JColorChooser();
2、构造器,创建一个初始颜色为initColor的颜色选择器。
public JColorChooser( Color initalColor);
3、 在component(父组件)中部显示一个颜色选择面板,标题为title,初始颜色为initalColor, 返回选择的颜色。
public static Color showDialog(Component component, String title,Color initalColor) throws HandlessException ;
4、 返回一个以colorChooser定义的颜色选择面板对话, 父组件为component,标题为title,model表示是否为模式对话,两个事件监听器分别为点击面板上的“确定”“取消”按钮的响应。
public static JDialog creatDialog(Component component,String title, JColorChooser colorChooser, boolean model, ActionListener okListener, ActionListener cancelListener ) throws HandlessException;
5、返回选定的颜色。
public Color getColor();
6、删除或替换预览面板
tcc.setPreviewPanel(new JPanel());
7、打开颜色选择对话框
Color newColor = JColorChooser.showDialog( ColorChooserDemo2.this,
"Choose Background Color",
banner.getBackground());
以上方法打开一个模式对话框,如想打开一个非模式对话框,可以使用createDialog方法,这个方法允许你为OK和CANCEL按钮自定义ActionListener。
8、将JColorChooser作为一般组件添加到某容器中
public class ColorChooserDemo extends JPanel ... {
public ColorChooserDemo() {
super(new BorderLayout());
banner = new JLabel("Welcome to the Tutorial Zone!", JLabel.CENTER); banner.setForeground(Color.yellow);
. . .
tcc = new JColorChooser(banner.getForeground());
. . .
add(tcc, BorderLayout.PAGE_END);
}
9、ColorSelctionModel
JColorChooser使用ColorSeclectionModel管理当前颜色的选择,当前颜色发生变化时,该对象会向注册的ChangeListener发送一个ChangeEvent事件,可以通过相应该事件,及时反映颜色的变化。
tcc.getSelectionModel().addChangeListener(this);
. . .
public void stateChanged(ChangeEvent e) {
Color newColor = tcc.getColor();
banner.setForeground(newColor);
}
10、创建一个自定义的选择面板
可以通过addChooserPanel方法添加一个自定义的选择面板,如果你想完全替换默认面板,请使用setChooserPanels方法:
//Override the chooser panels with our own.
AbstractColorChooserPanel panels[] = { new CrayonPanel() };
tcc.setChooserPanels(panels);
其中CrayonPanel是AbstractColorChooserPanel的一个子类,必须重写其中的5个抽象方法。
范例:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingControlDemo {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public SwingControlDemo(){
prepareGUI();
}
public static void main(String[] args){
SwingControlDemo swingControlDemo = new SwingControlDemo();
swingControlDemo.showColorChooserDemo();
}
private void prepareGUI(){
mainFrame = new JFrame("Java Swing Examples");
mainFrame.setSize(400,400);
mainFrame.setLayout(new GridLayout(3, 1));
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent){
System.exit(0);
}
});
headerLabel = new JLabel("", JLabel.CENTER);
statusLabel = new JLabel("",JLabel.CENTER);
statusLabel.setSize(350,100);
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showColorChooserDemo(){
headerLabel.setText("Control in action: JColorChooser");
JButton chooseButton = new JButton("Choose Background");
chooseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Color backgroundColor = JColorChooser.showDialog(mainFrame,
"Choose background color", Color.white);
if(backgroundColor != null){
controlPanel.setBackground(backgroundColor);
mainFrame.getContentPane().setBackground(backgroundColor);
}
}
});
controlPanel.add(chooseButton);
mainFrame.setVisible(true);
}
}
运行示例图: