java学习——79.简单通讯录(四)
主界面类:
终于进入主界面了。
主界面代码稍有点长,所以我将之分为布局和事件两部分介绍,但都是在同一个类Txl中。
对于主界面的布局,我分为了三部分:上、中、下,各用了一个JPanel面板。
然后将这三个面板按照JFrame的默认布局方式将之放在北、中、南三个位置。
代码如下:
/**
通讯录的主界面,main方法在本类中
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class Txl extends JFrame implements ActionListener {
private JPanel top,main,bottom;//面板,上,中,下
private People people[];//接收传过来的联系人
private JButton button[];//按钮组,面板下中的“查找”、“新增”、“删除”、“排序”四个按钮
private JTextField select_person;//查找按钮旁边的文本框
private JComboBox sort_person;//排序按钮旁边的组合框
private DefaultListModel model;//接收传过来的模板,以创建列表框
private JList list;//联系人,列表框
public Txl(DefaultListModel model,People people[]){
super("通讯录");
this.setVisible(true);
this.setBounds(200, 200, 760, 300);
//以下为三个面板的实例化
top=new JPanel();
top.setSize(760,20);
main=new JPanel();
main.setSize(760,240);
bottom=new JPanel();
bottom.setSize(760,30);
//以下为将三个面板放在适当的位置
this.getContentPane().add(top,"North");
this.getContentPane().add(main);
this.getContentPane().add(bottom,"South");
//以下调用方法来具体为三个面板填充组件
this.top_AddCompont();
this.bottom_Addbutton();
this.model=new DefaultListModel();
this.model=model;
this.main_AddComponent();
this.people=people;
}
//面板bottom中添加组件
public void bottom_Addbutton(){
String s[]={"新增","修改","删除","go","排序"};
button=new JButton[s.length]; //创建按钮,按钮中的文字即以上数组中的字
for(int i=0;i<s.length;i++){
button[i]=new JButton(s[i]);
button[i].addActionListener(this); //为每一个按钮注册事件监听
}
select_person=new JTextField(10);
sort_person=new JComboBox();
String s2[]={"按姓名笔画排序","按姓名首字母排序"};
for(int j=0;j<s2.length;j++){
sort_person.addItem(s2[j]); //给组合框添加文本
}
bottom.add(button[0]);//新增按钮加入到bottom面板中
bottom.add(button[1]);//修改
bottom.add(button[2]);//删除
bottom.add(new Label("查找联系人:"));//bottom面板中添加标签
bottom.add(select_person);//查找文本框
bottom.add(button[3]);//go
bottom.add(sort_person);//排序组合框
bottom.add(button[4]);//排序
sort_person.addActionListener(this); //为排序组合框注册事件监听
}
//创建列表框中,并加入到main面板
publicvoid main_AddComponent(){
list=new JList(model); //实例化列表,列表中的模板即为Main类中传过来的数据
list.setSize(680, 300);
list.addListSelectionListener(this); //为列表注册事件监听
main.add(new JScrollPane(list)); //将列表放入滚动窗格中,并加入到main面板中
}
//最顶上面板
publicvoid top_AddCompont(){
top.setLayout(new FlowLayout());//top面板的布局方式
top.add(new JLabel("亲爱的主人,您好,今天是:"));//top面板添加标签
top_time time=new top_time();//此为另一个类,该类的主要作用是显示当前时间,用了多线程的方式,以使其可以实时显示时间
time.start();//线程启动
top.add(time.getLabel());//将显示时间的标签加入到top面板中
}
其运行结果如下:
本篇于年前已写好,但一天只能群发一次,明天要回老家,不知道哪天能想起来发出来