import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
/**
* @author Michael
* @version 2020/11/3 16:37
*/
class Default {
static int MAX_LENGTH = 100;
static int order = 0;
static int selectedOrder = 0;
}
class Contacts {
String name = "", num = "";
boolean sex;
protected void setContacts (String name, String num, boolean sex) {
this.name = name;
this.num = num;
this.sex = sex; // if "male" ture; else false;
}
public String getName() {
return name;
}
public String getNum() {
return num;
}
public int getSex() {
if (this.name.equals("")) {
return -1;
}
return this.sex ? 1 : 0;
}
}
public class AddressBook extends JFrame{
JScrollPane scrollPane;
JButton[] contacts;
JPanel p1, p2;
JButton create, save, delete;
JRadioButton male, female;
JTextField name, num;
ButtonGroup buttonGroup = new ButtonGroup();
Contacts[] cont = new Contacts[Default.MAX_LENGTH];
AddressBook() {
Frame();
Panel_1();
Panel_2();
initPanel_2();
}
private void Frame() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
setSize(700, 400);
setLocationRelativeTo(null);
}
private void Panel_1() {
p1 = new JPanel(new FlowLayout());
initContacts();
setScrollPane();
scrollPane.setBounds(0, 0, 400, 365);
}
private void Panel_2() {
p2 = new JPanel(new GridLayout(6, 1));
p2.setBounds(400, 0, 300, 400);
add(p2);
}
private void initContacts() {
contacts = new JButton[Default.MAX_LENGTH];
for (int i=0; i < contacts.length; i++) {
contacts[i] = new JButton();
contacts[i].setPreferredSize(new Dimension(300,50));
// p1.add(contacts[i]);
// contacts[i].setText("填入信息后点击右侧保存");
contacts[i].setVisible(false);
contacts[i].addActionListener(buttonListener);
contacts[i].setActionCommand("REVISE_AND_SAVE" + i);
}
}
private void initPanel_2() {
nameBox();
numBox();
initRButton();
button3Group();
}
private void initRButton() {
var panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
male = new JRadioButton("男");
female = new JRadioButton("女");
male.setFont(new Font("宋体", Font.BOLD, 24));
female.setFont(new Font("宋体", Font.BOLD, 24));
buttonGroup.add(male);
buttonGroup.add(female);
panel.add(male);
panel.add(female);
p2.add(panel);
}
private void nameBox() {
var panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
var panel2 = new JPanel(new BorderLayout());
var nameLabel = new JLabel();
nameLabel.setText("姓名:");
nameLabel.setFont(new Font("黑体", Font.BOLD, 24));
name = new JTextField(11);
name.setFont(new Font("黑体", Font.PLAIN, 24));
panel.add(nameLabel);
panel.add(name);
p2.add(panel2);
p2.add(panel);
}
private void numBox() {
var panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
var numLabel = new JLabel();
numLabel.setText("电话:");
numLabel.setFont(new Font("黑体", Font.BOLD, 24));
num = new JTextField(11);
num.setFont(new Font("黑体", Font.PLAIN, 24));
panel.add(numLabel);
panel.add(num);
p2.add(panel);
}
private void button3Group() {
var panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
create = new JButton();
save = new JButton();
delete = new JButton();
panel.add(create);
panel.add(save);
panel.add(delete);
create.setText("新建联系人");
save.setText("保存");
delete.setText("删除");
create.addActionListener(listener);
create.setActionCommand("CreateContact");
save.addActionListener(buttonListener);
save.setActionCommand("SaveContact");
delete.addActionListener(listener);
delete.setActionCommand("DELETE");
p2.add(panel);
}
private void setScrollPane() {
scrollPane = new JScrollPane(p1, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
add(scrollPane);
}
void delete() {
for(int i=Default.selectedOrder; i < Default.order-1;i++) {
cont[i].name = cont[i + 1].name;
cont[i].num = cont[i + 1].num;
cont[i].sex = cont[i + 1].sex;
contacts[i].setText(contacts[i+1].getText());
}
Default.order -= 1;
cont[Default.order].name = "";
cont[Default.order].num = "";
cont[Default.order].sex = true;
contacts[Default.order].setVisible(false);
// Default.order--;
Default.selectedOrder--;
}
ActionListener listener = e -> {
String command = e.getActionCommand();
for (JButton b : contacts) {
b.setBackground(null);
}
if(command.equals("CreateContact")) {
cont[Default.order] = new Contacts();
Default.selectedOrder = Default.order;
p1.setPreferredSize(new Dimension(400, 55 * (Default.order + 1)));
p1.add(contacts[Default.order]);
contacts[Default.order].setText("填入信息后点击右侧保存");
contacts[Default.order].setVisible(true);
scrollPane.getViewport().setViewPosition(new Point(0, p1.getHeight()));
Default.order++;
name.setText(null);
num.setText(null);
buttonGroup.clearSelection();
contacts[Default.selectedOrder].setBackground(Color.PINK);
}
if(command.equals("DELETE")) {
// System.out.println("deleted");
delete();
name.setText(null);
num.setText(null);
buttonGroup.clearSelection();
}
};
ActionListener buttonListener = e -> {
String command = e.getActionCommand();
for (JButton b : contacts) {
b.setBackground(null);
}
for(int i=0; i < Default.MAX_LENGTH; i++) {
if (command.equals("REVISE_AND_SAVE" + i)) {
contacts[i].setBackground(Color.PINK);
Default.selectedOrder = i;
name.setText(cont[i].getName());
num.setText(cont[i].getNum());
if (cont[i].getSex() == 1) {
male.setSelected(true);
}
else if (cont[i].getSex() == 0){
female.setSelected(true);
}
else {
buttonGroup.clearSelection();
}
}
}
if (command.equals("SaveContact")) {
contacts[Default.selectedOrder].setText(name.getText());
cont[Default.selectedOrder].setContacts(name.getText(), num.getText(), male.isSelected());
}
};
}
Address Book.zip
5星 · 超过95%的资源 需积分: 50 175 浏览量
2020-11-03
16:51:49
上传
评论 7
收藏 12KB ZIP 举报
Michael菜鸟
- 粉丝: 19
- 资源: 3
最新资源
- 基于Pytorch复现Point-Transformer,用于ShapeNet数据集点云分割
- 【医学影像分析】2D超声图像的分割检测(Ultrasound Nerve Segmentation - Kaggle数据集)
- 嘎嘎香的五款神仙谷歌插件
- .arch书源导入教程.mp4
- 贪心算法介绍及代码示例讲解
- CR13SP35MSI64 Crystal 水晶报表运行组件最后版本64位
- 图像分类数据集:玉米叶是否感染分类数据集(2分类,包含训练集、验证集)
- 小U商城.zip
- 高光谱图像计算机视觉分类图像预处理工具集,包含去除图片无关背景,数据增强,生成标签文件等功能
- (顶刊复现)基于配电网韧性提升的应急移动电源预配置和动态调度(下)-MPS动态调度
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论5