一.程序入口
package p1;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;public class EnterClass
{
public static void createGUI() {
JFrame frame=new JFrame("阿冲");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane=frame.getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(new JLabel("123"));
frame.setSize(600,600);
frame.setVisible(true);
}
public static void createGUI2() {
//JFrame frame=new MyFrame("阿冲");//
// JFrame frame=new MouseFrame("阿冲");
// JFrame frame=new BarFrame("阿冲");
JFrame frame=new DialogFrame("阿冲");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(570,570);
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run()
{
//createGUI();
createGUI2();
}
});
}
}
二.自定义Frame
1.加入基本控件MyFrame
package p1;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.Rectangle;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;import af.swing.image.AfImageView;
public class MyFrame extends JFrame
{
public MyFrame(String title)
{
//设置标题
super.setTitle(title);
//容器对象
Container container=getContentPane();
//布局管理器
// LayoutManager layout=new FlowLayout(FlowLayout.CENTER);//流布局对象
// LayoutManager layout=new BorderLayout();//边界布局对象
// LayoutManager layout=new BoxLayout(container,BoxLayout.Y_AXIS);//盒布局对象
// container.setLayout(layout);//容器设置布局对象
//不设置布局管理器,手动布局
// container.setLayout(null);
// JLabel j=new ColorfulLabel("123",Color.blue);
// j.setBounds(new Rectangle(200,100,200,200));//设置界限
// container.add(j);
//Box是一个JComponent,内部已经使用了BoxLayout
// Box box=Box.createVerticalBox();
// Box line1=Box.createHorizontalBox();
// Box line2=Box.createHorizontalBox();
// //line1.setOpaque(true);//设置不透明
// //line1.setBackground(Color.BLUE);//设置背景色
// box.add(Box.createVerticalStrut(10));//设置竖直固定间距
// box.add(line1);
// box.add(line2);
// box.add(Box.createVerticalGlue());
// container.add(box);
//创建边框
//Border border=BorderFactory.createLineBorder(Color.BLUE,4);//BorderFactory工具类
// Border border=new LineBorder(Color.BLUE,4);
//复合边框
// Border border2=BorderFactory.createLineBorder(Color.GREEN,4);
// Border border3=BorderFactory.createLineBorder(Color.RED,4);
// Border compound=BorderFactory.createCompoundBorder(border,border2);
// Border compound2=BorderFactory.createCompoundBorder(compound,border3);
// box.setBorder(compound2);
//边距与填充
// Border margin=BorderFactory.createEmptyBorder(20,20,20,20);//边距
// Border titleBorder=BorderFactory.createTitledBorder("标题边框");
// Border padding=BorderFactory.createEmptyBorder(40,40,40,40);//填充
// Border compound=BorderFactory.createCompoundBorder(margin,titleBorder);
// Border compound2=BorderFactory.createCompoundBorder(compound,padding);
// box.setBorder(compound2);
//卡片布局
// container.setLayout(new BorderLayout());
// JPanel cards=new JPanel();
// JPanel card1=new JPanel();
// JPanel card2=new JPanel();
// cards.add(card1,"卡片一");
// cards.add(card2,"卡片二");
// container.add(cards);
// CardLayout cl = (CardLayout) cards.getLayout();
// cl.show(cards, "卡片一");
//
//标签用于显示短文本或图标
// JLabel jlabel=new JLabel("标签");//标签对象
// container.add(jlabel);//容器添加标签
// JButton jbutton=new JButton("按钮");//按钮对象
// container.add(jbutton);//容器添加按钮
//
// JLabel timelabel=new JLabel();
// container.add(timelabel);//添加显示时间的标签
// timelabel.setText(SwingSmallToolClass.showtime());//标签设置初始时间
//
// //创建监听器对象
// ActionListener actionlistener=new ActionListener() {
//
// @Override
// public void actionPerformed(ActionEvent e) {
//
// System.out.println("按钮被点击");
// }
// };
//
// jbutton.addActionListener(actionlistener);//按钮添加监听器
// //匿名内部类添加监听器
// jbutton.addActionListener(new ActionListener() {
//
// @Override
// public void actionPerformed(ActionEvent e) {
// System.out.println("匿名内部类添加监听器");
// }
// });
// //Lambda表达式添加监听器
// jbutton.addActionListener((e)->{
// timelabel.setText(SwingSmallToolClass.showtime());//标签刷新时间
// System.out.println("Lambda表达式添加监听器");
// });
//创建文本框
// TextField textfield=new TextField(16);
// container.add(textfield);
// //textfield.setEnabled(false);文本框禁用
//
// jbutton.addActionListener((e)->{
// JOptionPane.showMessageDialog(this,textfield.getText());
// });
//创建复选框
// JCheckBox jcheckbox=new JCheckBox("复选框");
// container.add(jcheckbox);
//下拉列表
// JComboBox<String> jcombobox=new JComboBox<>();
// jcombobox.addItem("选项一");
// jcombobox.addItem("选项二");
// jcombobox.addItem("选项三");
// String str=(String)jcombobox.getSelectedItem();//获取文本
//彩色标签
// JLabel l1=new ColorfulLabel("l1", Color.blue);
//创建密码框
// JPasswordField passwordfield=new JPasswordField(20);//显示长度20
//图标,支持jpg/jpeg/png
//URL url=getClass().getResource("/picture/yuandan.png");
//Icon icon=new ImageIcon(url);
// SwingSmallToolClass s=new SwingSmallToolClass();
// Icon icon=s.getIcon("/picture/yuandan.png");
// JLabel iconLabel=new JLabel();
// iconLabel.setIcon(icon);
// box.add(iconLabel);
//自定义控件
LayoutManager layout=new BorderLayout();//边界布局对象
container.setLayout(layout);//容器设置布局对象
MyPanel mp=new MyPanel();
container.add(mp,BorderLayout.CENTER);
// container.setLayout(new BorderLayout());//容器设置布局对象
// JSpinner spinner=new JSpinner(new SpinnerNumberModel(3, 1, 5, 1));//初始值,最大值,最小值,每次调节值
// container.add(spinner,BorderLayout.PAGE_START);
// //添加监听器
// ChangeListener changelistener=new ChangeListener() {
// public void stateChanged(ChangeEvent e) {
// System.out.println("changelistener");
// }
// };
// spinner.addChangeListener(changelistener);
//添加图片
// container.setLayout(new BorderLayout());
// //自定义面板进行图片插入
// AfImageView imageView=new AfImageView();
// container.add(imageView,BorderLayout.CENTER);
// imageView.setScaleType(AfImageView.FIT_CENTER_INSIDE);//设置缩放格式
// imageView.setBgColor(Color.blue);//设置背景色
// URL imageUrl = MyFrame.class.getResource("/picture/im_j20.jpg");
// try {
// Image image=ImageIO.read(imageUrl);
// imageView.setImage(image);//设置图片
// } catch (IOException e) {
// e.printStackTrace();
// }
}}
2.鼠标反应MouseFrame
package p1;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List;import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;import af.swing.AfPanel;
import af.swing.image.AfImageView;
import af.swing.layout.AfRowLayout;public class MouseFrame extends JFrame {
AfImageView CenterPicture = new AfImageView();
List<PictureButton> buttons = new ArrayList<>();public MouseFrame(String title) {
super.setTitle(title);// 内容面板
JPanel root = new JPanel();
this.setContentPane(root);
root.setLayout(new BorderLayout());// 主图
CenterPicture.setBackground(Color.WHITE);
CenterPicture.setScaleType(AfImageView.FIT_CENTER);
CenterPicture.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, Color.BLUE));
root.add(CenterPicture, BorderLayout.CENTER);// 辅图
AfPanel PBar = new AfPanel();
PBar.layout(new AfRowLayout(10));
PBar.padding(10).preferredHeight(80);
root.add(PBar, BorderLayout.PAGE_START);// 共用一个事件监听器
ThumbClickListener clickListener = new ThumbClickListener();// 加载 picture 文件夹下的图片 ( 本地文件方式 )
File imageDir = new File("picture");
File[] imageFiles = imageDir.listFiles();
for (File f : imageFiles) {
PictureButton button = new PictureButton(f);
PBar.add(button, "auto");
buttons.add(button);button.setPreferredSize(new Dimension(80, 80));
button.setBgColor(Color.WHITE);
button.setBorder(BorderFactory.createLineBorder(Color.white, 3));// 添加事件监听器
button.addMouseListener(clickListener);
}// *************************************************************//
// Container container=getContentPane();
// container.setLayout(new BorderLayout());
// JPanel jpanel=new JPanel();
// container.add(jpanel);// jpanel.addMouseListener(new MouseAdapter() {
//
// @Override
// public void mouseClicked(MouseEvent e) {
// if(e.getButton()==MouseEvent.BUTTON1)
// System.out.println("左键");else
// if(e.getButton()==MouseEvent.BUTTON2)
// System.out.println("中键");else
// if(e.getButton()==MouseEvent.BUTTON3)
// System.out.println("右键");
//
// int num=e.getClickCount();
// if(num==1) System.out.println("单击");
// if(num==2) System.out.println("双击");
//
// System.out.println("鼠标位置"+e.getX()+","+e.getY());
// }
//
// });// jpanel.addMouseListener(new MouseListener() {
//
// @Override//鼠标抬起
// public void mouseReleased(MouseEvent e) {
// // TODO Auto-generated method stub
//
// }
//
// @Override//鼠标按下
// public void mousePressed(MouseEvent e) {
// // TODO Auto-generated method stub
//
// }
//
// @Override//鼠标退出
// public void mouseExited(MouseEvent e) {
// // TODO Auto-generated method stub
//
// }
//
// @Override//鼠标进入
// public void mouseEntered(MouseEvent e) {
// // TODO Auto-generated method stub
//
// }
//
// @Override//点击
// public void mouseClicked(MouseEvent e) {
// if(e.getButton()==MouseEvent.BUTTON1)
// System.out.println("左键");else
// if(e.getButton()==MouseEvent.BUTTON2)
// System.out.println("中键");else
// if(e.getButton()==MouseEvent.BUTTON3)
// System.out.println("右键");
//
// int num=e.getClickCount();
// if(num==1) System.out.println("单击");
// if(num==2) System.out.println("双击");
//
// System.out.println("鼠标位置"+getX()+","+getY());
//
// }
// });}
private class ThumbClickListener extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
// 被点击的按钮
PictureButton source = (PictureButton) e.getSource();// 点击的按钮:显示蓝色高亮边框
// 其他按钮:白色普通边框
for (PictureButton button : buttons) {
if (button == source) {
button.setBorder(BorderFactory.createLineBorder(new Color(0x1E9FFF), 3));
} else {
button.setBorder(BorderFactory.createLineBorder(Color.white, 3));
}
}// 中间区域: 显示大图
CenterPicture.setImage(source.image);
}}
}
3.对话框DialogFrame
package p1;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;public class DialogFrame extends JFrame {
public DialogFrame(String title) {
this.setTitle(title);JPanel root = new JPanel();
this.setContentPane(root);
root.setLayout(new FlowLayout());JTextField textField = new JTextField(20);
JButton button = new JButton("测试");
root.add(textField);
root.add(button);button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
test4();
}
});
}// 简单消息提示框
private void test1() {
JOptionPane.showMessageDialog(this, "操作已经完成!");
System.out.println("test1 exit");
}// 简单确认输入框
private void test2() {
int select = JOptionPane.showConfirmDialog(this, "是否确认删除?", "确认", JOptionPane.YES_NO_OPTION);// select 为用户点的第几个按钮
if (select == 0) {
System.out.println("模拟执行数据删除操作...");
System.out.println("删除完成");
}System.out.println("test2 exit");
}// 简单数据输入框
private void test3() {
String input = JOptionPane.showInputDialog(this, "请输入你的身份证号\n (字母以X代替)", "0000");
if (input != null) {
System.out.println("输入的号码为: " + input);
}
System.out.println("test3 exit");
}// 简单选项对话框
private void test4() {
Object[] colors = { "红色", "绿色", "蓝色" };
String select = (String) JOptionPane.showInputDialog(this, "你最喜欢的颜色", "请选择", JOptionPane.PLAIN_MESSAGE, null,
colors, "红色");
if (select != null) {
System.out.println("选择了: " + select);
}
System.out.println("test4 exit");
}
}
4.待续......