`
xiaoer_1982
  • 浏览: 1811842 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java6学习笔记6——利用Swing开发颜色选择的实时改变和对话框设置

阅读更多

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JColorChooser;
import javax.swing.colorchooser.ColorSelectionModel;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.awt.Dimension;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;

public class ColorComponent extends JFrame implements ChangeListener {
//实现了ChangeListener接口,这个监听轻量通知的监听器询问从变化事件获得的事件源,以了解与变化有关的更多信息。

JLabel label;
JColorChooser chooser;
public static void main(String arg[]) {
new ColorComponent();
}
public ColorComponent() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
} );
setLocation(250,150);
Container pane = getContentPane();
pane.setLayout(new BorderLayout());

label = new JLabel("Color Dialog",JLabel.CENTER);
label.setFont(new Font("Serif",Font.BOLD,32));//设置字体
label.setPreferredSize(new Dimension(125,75));//设置适当大小
add(label,BorderLayout.NORTH);

chooser = new JColorChooser(label.getForeground());//一个允许用户操作和选择颜色的窗口
ColorSelectionModel model = chooser.getSelectionModel();//返回处理颜色选择的数据模型
model.addChangeListener(this);//添加监听对象
add(chooser,BorderLayout.SOUTH);//JFrame中的方法,将其添加进窗口

pack();//调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该 Window

setVisible(true);//显示窗口
}
public void stateChanged(ChangeEvent e) {//ChangeListener接口的方法
Color color = chooser.getColor();//获取所选颜色
label.setForeground(color);//设置前景色
}
}

对话框设置:

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import java.io.File;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Color;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class ColorDialog extends JFrame implements ActionListener {
JButton b1;
JButton b2;
JButton b3;
public static void main(String arg[]) {
new ColorDialog();
}
public ColorDialog() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
} );
setLocation(250,150);
Container pane = getContentPane();
pane.setLayout(new FlowLayout());为容器设置布局管理器,流布局在一个 left-to-right 流中安排组件,很象在段落中的文本行。 流布局特别常用于在面板中安排按钮。 它会从左到右的安排按钮直到在同一行中不可以再放置更多的按钮时为止。 每行都是中心对齐的。
b1 = new JButton("Buttons");
b1.addActionListener(this);
pane.add(b1);
b2 = new JButton("Letters");
b2.addActionListener(this);
pane.add(b2);
pack();

setVisible(true);
}
public void actionPerformed(ActionEvent e) {
int retval;
String selection = e.getActionCommand();
if(selection.equals("Buttons")) {
Color color = JColorChooser.showDialog(this,
"Select background color of buttons",
b1.getBackground());
b1.setBackground(color);
b2.setBackground(color);
} else if(selection.equals("Letters")) {
Color color = JColorChooser.showDialog(this,
"Select color of button text",
b1.getForeground());
b1.setForeground(color);
b2.setForeground(color);
repaint();
}
}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics