Java学习日记:UI篇(5)–界面登录跳转
这一篇是对第一节登录界面及画图板的综合,在登录界面输入相关信息以后,可跳转至画图板。
基础已在前面叙述,此处直接给代码:
- 登陆界面:
package 登录后跳转画图板;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
*
* @author idnihai
*
*/
public class DrawPadLogin {
public void showUI() {
//初始化登陆界面
JFrame jf=new JFrame();
jf.setTitle("画图板登录");
jf.setSize(400,300);
jf.setDefaultCloseOperation(3);//使界面上的关闭键有效
jf.setResizable(false);//登陆界面大小不可变
jf.setLocationRelativeTo(null);//默认居中
/**
* 布局
*/
FlowLayout fl=new FlowLayout();//流式布局
jf.setLayout(fl);
/**
* 界面组件
*/
//标签
JLabel zhanghaojl =new JLabel("账号");
JLabel mimajl =new JLabel("密码");
//设置输入框
JTextField jtf=new JTextField();
//设置密码框
JPasswordField jpf =new JPasswordField();
//按钮
JButton login_jb=new JButton("登录");//登录按钮
/**
* 组件属性
*/
//输入框大小
Dimension dim = new Dimension(100,30);
jtf.setPreferredSize(dim);
jpf.setPreferredSize(dim);
//登录按钮大小
Dimension dim1 = new Dimension(70,30);
login_jb.setPreferredSize(dim1);
/**
* 向界面中添加组件
*/
jf.add(zhanghaojl);//账号标签
jf.add(jtf);//账号输入框
jf.add(mimajl);//密码标签
jf.add(jpf);//密码输入框
jf.add(login_jb);//登录按钮
jf.setVisible(true);
DrawListener dl=new DrawListener();
//绑定按钮
login_jb.addActionListener(dl);
//传参
dl.zhanghaoField =jtf;
dl.pwdField =jpf;
}
public static void main(String[] args) {
DrawPadLogin dpl=new DrawPadLogin();
dpl.showUI();
}
}
- 登录接口:
package 登录后跳转画图板;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class DrawListener implements ActionListener{
//传值,获取账号,密码
JTextField zhanghaoField;
JPasswordField pwdField;
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String btnstr = e.getActionCommand();
if(btnstr.equals("登录")) {
if(zhanghaoField.getText().equals("123")&&pwdField.getText().equals("123")) {//账号、密码均为123,getText已不被推荐使用
System.out.println(btnstr);
DrawBoard.main(null);
}
else{
System.out.println("登陆失败。");
}
}
}
}
- 画图板界面:
package 登录后跳转画图板;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JFrame;
public class DrawBoard {
public void showUI() {
JFrame jf =new JFrame();
jf.setTitle("画图板");
jf.setSize(800,600);
//jf.setLocation(null); 这是个啥东西,报错
jf.setLocationRelativeTo(null);//默认居中
jf.setDefaultCloseOperation(3);//关闭
jf.setResizable(false);//固定大小
FlowLayout fl =new FlowLayout();
jf.setLayout(fl);
DrawListener2 dl2 =new DrawListener2();//调用DrawListener
String [] drawoption ={"直线","圆","矩形"};
for(int i=0;i<drawoption.length;i++) {
JButton btn = new JButton(drawoption[i]);
jf.add(btn);
btn.addActionListener(dl2);
}
//Color c =new Color();
Color [] coloroption = {Color.BLACK,Color.blue,Color.CYAN,Color.gray,Color.GREEN,Color.red};
Dimension dim= new Dimension(30,30);
for(int i=0;i<coloroption.length;i++) {
JButton btn = new JButton();
btn.setBackground(coloroption[i]);
btn.setPreferredSize(dim);
jf.add(btn);
btn.addActionListener(dl2);
}
//添加组件
jf.setVisible(true);//可视化
//绑定组件
jf.addMouseListener(dl2);
//取画笔
Graphics g =jf.getGraphics();
//System.out.println(g);
dl2.g =g;
}
//主函数
public static void main(String[] args){
DrawBoard db =new DrawBoard();
db.showUI();
}
}
- 画图板接口类:
package 登录后跳转画图板;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.Graphics;
public class DrawListener2 implements MouseListener,ActionListener{
int x1,x2,y1,y2;
Graphics g;
String btnstr="";
ArrayList list = new ArrayList();
public void actionPerformed(ActionEvent e) {
btnstr =e.getActionCommand();//用于获得按钮上的信息
list.add(btnstr);//将从按钮上获得的信息放入数组,可以实现:点击一个线形按钮后,换颜色不需要重新点击线形按钮即可画图
//System.out.println(list);
if (btnstr=="") {
//取颜色 设置给画笔
//按钮对象
JButton btn =(JButton) e.getSource();
Color color = btn.getBackground();//获得颜色按钮信息
g.setColor(color);//将颜色按钮上的颜色赋给画笔
}
}
public void mouseClicked(MouseEvent e) {//点击
//System.out.println("点击");
}
public void mousePressed(MouseEvent e){//按下
//获取按下鼠标时的坐标值
x1 = e.getX();
y1 = e.getY();
//System.out.println("按下");
}
public void mouseReleased(MouseEvent e) {//释放
//获取松开鼠标时的坐标值
x2 = e.getX();
y2 = e.getY();
System.out.println(btnstr);
String btnstr1;
btnstr1=(String) list.get(list.size() - 1);
int i=2;
while(btnstr1.contentEquals("")) {
btnstr1=(String) list.get(list.size() - i);
i++;
}
if(btnstr1.equals("直线")) {
//画直线
g.drawLine(x1, y1, x2, y2);
}
else if(btnstr1.equals("圆")) {
//画圆
g.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1));
}
else if(btnstr1.equals("矩形")) {
//画矩形
g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1));
}
}
public void mouseEntered(MouseEvent e) {//进入界面
}
public void mouseExited(MouseEvent e) {//离开界面
}
}