小KTV学习-2

晚上刚才敲了一个这个start显示界面的窗口类和添加歌曲界面

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.WindowConstants;

public class Start extends JFrame{
	Thread t;
	int n=0;
	JLabel xuan=null;
	JLabel wait=null;
	JLabel inserthead=null;
	JPanel jp=null;
	JProgressBar bar;
	boolean f=true;
	public Start(){
		//创建所需组建
		this.jp=new JPanel();
		this.xuan=new JLabel(new ImageIcon("./src/image/KTV1.jpg"));	//KTV图片链接
		this.inserthead=new JLabel(new ImageIcon("./src/image/KTV2.jpg")); 		
		this.wait=new JLabel(new ImageIcon("./src/image/KTV3.jpg")); 	
		this.bar=new JProgressBar();
		bar.setBackground(Color.red);
		bar.setForeground(Color.black);
		bar.setStringPainted(true);
		
		//设置进度条,使用了多线程!使用多线程的方式设置进入主界面的进度条,在进度条读取完毕后进入主界面
		t=new Thread(new Runnable() {
			
			public void run() {
				try {
					Thread.sleep(20);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				for (int i=0;i<101;i++){
					bar.setValue(i);
					n++;
					try {
						Thread.sleep(43);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					if (i==100){
						setVisible(false);
						new Applet();
					}
				}
			}
		});
		t.start();
		//获得容器
		Container con=this.getContentPane();
		jp.setLayout(new GridLayout(3, 1));
		//添加组件
		con.add(xuan);
		con.add(jp, BorderLayout.SOUTH);
		jp.add(bar);
		jp.add(inserthead);
		jp.add(wait);		//就是定义一个容器,把组建都放到这里面
		//设置属性
		setTitle("NO.1KTV选歌系统");
		setIconImage(Toolkit.getDefaultToolkit().createImage("./src/image/KTV4.jpg"));		//载入KTV正面图片
		setSize(500, 450);
		setLocation(200,100);
		setVisible(true);
		//窗口关闭
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
}
首先学习了解到一个定义一个类,里面的属性在构造函数一开始定义里面都进行了功能的定义,就是上面所说的创建所需组建。

下面又用到了多线程Runnable(里面的run),这里sleep是

1.可以调用Thread类的静态方法:  public static void sleep (long millis) thorows InterruptedException 使得当前线程休眠(暂时停止执行millis毫秒) 
2.由于是静态方法,sleep可以由类名.直接调用:Thread.sleep(…) 
t.start()启动多线程

然后就有容器里面加组建

//获得容器
Container con=this.getContentPane();
jp.setLayout(new GridLayout(3, 1));
//添加组件
con.add(xuan);
con.add(jp, BorderLayout.SOUTH);
jp.add(bar);
jp.add(inserthead);
jp.add(wait);

当然另外还回忆了下导入图片路径

setIconImage(Toolkit.getDefaultToolkit().createImage("./src/image/KTV4.jpg"));		//载入KTV正面图片

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.image.LookupOp;

import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Add extends JFrame implements ActionListener{
	//声明组建
	JPanel jp1,jp2,jp3,jp4,jp5,jp6;
	JButton jb1,jb2;
	JLabel jktv,jid,jname,jsinger,jsex,jtype;
	JTextField tid,tname,tsinger,tsex,ttype;
	JLabel song;
	JList jlist;
	DefaultListModel df;
	JScrollPane jsp;
	JTextArea jta;
	public Add(int id){
		//创建出所需要组件
		this.jp1=new JPanel();
		this.jp2=new JPanel();
		this.jp3=new JPanel();
		this.jp4=new JPanel();
		this.jp5=new JPanel();
		this.jp6=new JPanel();
		this.jktv=new JLabel(new ImageIcon("./src/image/KTV6.jpg"));
		this.jid=new JLabel("歌曲  id:");
		this.jname=new JLabel("歌曲名称");
		this.jsinger=new JLabel("歌手名称");
		this.jsex=new JLabel("歌手性别");
		this.jtype=new JLabel("歌曲类型");
		this.tname=new JTextField(18);
		this.tsinger=new JTextField(18);
		this.tsex=new JTextField(18);
		this.tid=new JTextField(3);
		
		this.song=new JLabel("歌曲信息");
		this.jta=new JTextArea(18,33);
		this.df=new DefaultListModel();
		this.jlist=new JList(this.df);
		this.jsp=new JScrollPane(this.jlist);
		this.jsp.add(this.jta);
		//获得容器
		Container con=this.getContentPane();
		con.add(jp4, BorderLayout.NORTH);
		con.add(jp5, BorderLayout.CENTER);
		con.add(jp6, BorderLayout.SOUTH);
		//添加组件
		jp4.add(jktv);
		jp5.add(jp1, BorderLayout.WEST);
		jp5.add(jp2, BorderLayout.CENTER);
		jp5.add(jp3, BorderLayout.EAST);
		jsp.setPreferredSize(new Dimension(390, 200));
		jp6.add(jsp, BorderLayout.CENTER);
		tid.setText(id+"");
		tid.setEditable(false);
		ttype=new JTextField(18);
		jb1=new JButton("确定");
		jb1.addActionListener(this);
		jb2=new JButton("取消");
		jb2.addActionListener(this);
		jp1.setLayout(new GridLayout(5, 1));
		jp2.setLayout(new GridLayout(5, 1));
		jp1.add(jid);
		jp2.add(tid);
		jp1.add(jname);
		jp2.add(tname);
		jp1.add(jsinger);
		jp2.add(tsinger);
		jp1.add(jsex);
		jp2.add(tsex);
		jp1.add(jtype);
		jp2.add(jtype);
		jp3.add(jb1);
		jp3.add(jb2);
		//设置属性
		setTitle("添加歌曲");
		setIconImage(Toolkit.getDefaultToolkit().createImage("./src/image/KTV8.jpg"));
		setLocation(300, 100);
		pack();
		setVisible(true);
	}
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals("确定")){
			int id=Integer.parseInt(tid.getText());
			String name=tname.getText();
			String singer=tsinger.getText();
			String sex=tsex.getText();
			String type=ttype.getText();
			new Oper().add(id, name, singer, type, sex);
			setVisible(false);
		}
		if (e.getActionCommand().equals("取消"))
			setVisible(false);
	}
	
}

这里的添加歌曲界面,我的天,全都是组建有关的操作,简直了,不认识的有

还是自己做的少,没用过,不看API,不了解呐。

但是进一步认知了

public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals("确定")){
			int id=Integer.parseInt(tid.getText());
			String name=tname.getText();
			String singer=tsinger.getText();
			String sex=tsex.getText();
			String type=ttype.getText();
			new Oper().add(id, name, singer, type, sex);
			setVisible(false);
		}
		if (e.getActionCommand().equals("取消"))
			setVisible(false);
	}
得到getText()然后经过Oper()进入管理层的里面找到执行功能函数

哦这样子就把界面层和业务处理层联系起来了!get

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值