1:进度条
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
public class Progress extends JPanel {
JProgressBar pb = new JProgressBar(); //进度条
JSlider sb = new JSlider(JSlider.HORIZONTAL, 0, 100, 60);//滑动条
public Progress() {
setLayout(new GridLayout(2,1));
add(pb);
sb.setValue(0);
sb.setPaintTicks(true);
sb.setMajorTickSpacing(20); //设置滑动条的主间隔个数
sb.setMinorTickSpacing(5); //每个间隔细分为5个间隔
sb.setBorder(new TitledBorder("Slide Me"));
pb.setModel(sb.getModel()); // Share model
add(sb);
}
public static void main(String args[]) {
JFrame jf = new JFrame();
Progress pro = new Progress();
jf.add(pro);
jf.setSize(200,300);
jf.setVisible(true);
}
} ///:~
结果如下所示:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.lang.reflect.*;
public class ButtonGroups extends JPanel {
static String[] ids = {
"June", "Ward", "Beaver","Wally", "Eddie", "Lumpy",
};
static JPanel makeBPanel(Class bClass, String[] ids) {
ButtonGroup bg = new ButtonGroup();
JPanel jp = new JPanel();
String title = bClass.getName();
title = title.substring( title.lastIndexOf('.') + 1);
jp.setBorder(new TitledBorder(title));
for(int i = 0; i < ids.length; i++) {
AbstractButton ab = new JButton("failed");
try {
//动态获得一个有一个String参数的构造函数
Constructor ctor = bClass.getConstructor(new Class[] { String.class });
//创造一个Object
ab = (AbstractButton)ctor.newInstance(new Object[]{ids[i]});
} catch(Exception ex) {
System.out.println("can't create " + bClass);
}
bg.add(ab);//按钮组添加按钮
jp.add(ab);
}
return jp;
}
public ButtonGroups() {
add(makeBPanel(JButton.class, ids));
add(makeBPanel(JToggleButton.class, ids));
add(makeBPanel(JCheckBox.class, ids));
add(makeBPanel(JRadioButton.class, ids));
}
public static void main(String args[]) {
JFrame jf = new JFrame();
ButtonGroups btg = new ButtonGroups();
jf.add(btg);
jf.setSize(500,300);
jf.setVisible(true);
}
} ///:~
结果如下所示:

ButtonGroup的作用就是一个button组中有一个被选中其他button就处于落选状态。
3:按钮图标
static Icon face = new Icon("face0.jpg");//建立图标 JButton jb = new JButton("bt",face); //建立带有图标的按钮 jb.setIcon(face);//设置图标 jb.setRolloverIcon(faces[1]);//设置滚动时的按钮图标 jb.setPressedIcon(faces[2]); //设置按下时的按钮图标 jb.setDisabledIcon(faces[4]);//设置禁用时的按钮图标
结果如下所示:

弹出菜单也很简单,包括菜单的创建,菜单命令的响应,如下所示:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Popup extends JPanel {
JPopupMenu popup = new JPopupMenu();
JTextField t = new JTextField(10);
public Popup() {
add(t);
ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent e){
t.setText( ((JMenuItem)e.getSource()).getText());
}
};
JMenuItem m = new JMenuItem("Hither");
m.addActionListener(al);
popup.add(m);
m = new JMenuItem("Yon");
m.addActionListener(al);
popup.add(m);
m = new JMenuItem("Afar");
m.addActionListener(al);
popup.add(m);
popup.addSeparator();
m = new JMenuItem("Stay Here");
m.addActionListener(al);
popup.add(m);
PopupListener pl= new PopupListener();
addMouseListener(pl);
t.addMouseListener(pl);//这样即便鼠标点击label,也会弹出菜单
}
class PopupListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
maybeShowPopup(e);
}
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
private void maybeShowPopup(MouseEvent e) {
//判断鼠标事件是否为弹出菜单的触发事件
if(e.isPopupTrigger()) {
popup.show(e.getComponent(), e.getX(), e.getY());
}
}
}
public static void main(String args[])