小KTV学习-2
Posted zy_dream
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小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
以上是关于小KTV学习-2的主要内容,如果未能解决你的问题,请参考以下文章