天天看点

Java JFrame

登录注册:

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.*;

import javax.swing.*;

//去掉默认布局管理器:JFrame jf = new JFrame("窗口");jf.setLayout(null);

public class Test extends JFrame implements ActionListener {

public Test() throws HeadlessException {

JFrame jf = new JFrame("窗口");

JPanel j1 = new JPanel(new GridLayout(2, 2));

JLabel jl1 = new JLabel("             用户账号");

JLabel jl2 = new JLabel("             用户密码");

JTextField jf1 = new JTextField(10);

JPasswordField jp = new JPasswordField(10);

j1.add(jl1);

j1.add(jf1);

j1.add(jl2);

j1.add(jp);

JLabel jl3 = new JLabel(new ImageIcon("E:/a.jpg"));

jf.add(jl3, BorderLayout.NORTH);

jf.add(j1, BorderLayout.CENTER);

jf.setSize(500, 500);

jf.setResizable(false);

JButton jb = new JButton("提交");

JButton jb2 = new JButton("注册");

JPanel jp2 = new JPanel();

jp2.add(jb);

jp2.add(jb2);

jf.add(jp2, BorderLayout.SOUTH);

Toolkit tk = Toolkit.getDefaultToolkit();

int swidth = tk.getScreenSize().width;

int sheight = tk.getScreenSize().height;

jf.setLocation((swidth - 500) / 2, (sheight - 500) / 2);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.setVisible(true);

jf.pack();

jb.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

Object source = e.getSource();

String text = jf1.getText();

String password = new String(jp.getPassword());

int confirmDialog = JOptionPane.showConfirmDialog(Test.this, "是否确认登陆");

if (confirmDialog == JOptionPane.YES_OPTION) {

BufferedReader br = null;

try {

br = new BufferedReader(new InputStreamReader(new FileInputStream("E:/新建文本文档.txt")));

String string = null;

while ((string = br.readLine()) != null) {

String[] split = string.split(",");

if (split[0].equals(text) && split[1].equals(password)) {

JOptionPane.showMessageDialog(Test.this, "登陆成功");

}

}

JOptionPane.showMessageDialog(Test.this, "请先注册");

} catch (Exception e1) {

e1.printStackTrace();

} finally {

try {

if (br != null)

br.close();

} catch (IOException e1) {

e1.printStackTrace();

}

finally {

try {

if(br!=null)

br.close();

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

}

});

jb2.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

Object source = e.getSource();

String text = jf1.getText();

String password = new String(jp.getPassword());

int confirmDialog = JOptionPane.showConfirmDialog(Test.this, "是否确认注册");

if (confirmDialog == JOptionPane.YES_OPTION) {

BufferedReader br = null;

BufferedWriter bw = null;

String s = text + "," + password;

try {

br = new BufferedReader(new InputStreamReader(new FileInputStream("E:/新建文本文档.txt")));

bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E:/新建文本文档.txt")));

String string = null;

while ((string = br.readLine()) != null) {

String[] split = string.split(",");

if (split[0].equals(text) && split[1].equals(password)) {

JOptionPane.showMessageDialog(Test.this, "已经存在,注册失败");

}

}

bw.write(s+"\r\n");

bw.flush();

JOptionPane.showMessageDialog(Test.this, "注册成功");

} catch (Exception e1) {

e1.printStackTrace();

} finally {

try {

if (br != null)

br.close();

} catch (IOException e1) {

e1.printStackTrace();

}

try {

if (bw != null)

bw.close();

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

});

}

public static void main(String[] args) {

Test test = new Test();

}

@Override

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

}

}

计算器:

import java.awt.BorderLayout;  

import java.awt.Color;  

import java.awt.GridLayout;  

import java.awt.event.ActionEvent;  

import java.awt.event.ActionListener;    

import javax.swing.JButton;  

import javax.swing.JFrame;  

import javax.swing.JPanel;  

import javax.swing.JTextField;  

public class Test extends JFrame implements ActionListener {  

    private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",  

            "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };  

    private final String[] COMMAND = { "Backspace", "CE", "C" };  

    private JButton keys[] = new JButton[KEYS.length];  

    private JButton commands[] = new JButton[COMMAND.length];  

    private JTextField resultText = new JTextField("0");  

    private boolean firstDigit = true;  

    private double resultNum = 0.0;  

    private String operator = "=";  

    private boolean operateValidFlag = true;  

    public Test() {  

        super();  

        init();  

        this.setBackground(Color.LIGHT_GRAY);  

        this.setTitle("计算器");  

        this.setLocation(500, 300);  

        this.setResizable(false);  

        this.pack();  

    }  

    private void init() {  

        resultText.setHorizontalAlignment(JTextField.RIGHT);  

        resultText.setEditable(false);  

        resultText.setBackground(Color.white);  

        JPanel calckeysPanel = new JPanel();  

        calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));  

        for (int i = 0; i < KEYS.length; i++) {  

            keys[i] = new JButton(KEYS[i]);  

            calckeysPanel.add(keys[i]);  

            keys[i].setForeground(Color.blue);  

        }  

        keys[3].setForeground(Color.red);  

        keys[8].setForeground(Color.red);  

        keys[13].setForeground(Color.red);  

        keys[18].setForeground(Color.red);  

        keys[19].setForeground(Color.red);  

        JPanel commandsPanel = new JPanel();  

        commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));  

        for (int i = 0; i < COMMAND.length; i++) {  

            commands[i] = new JButton(COMMAND[i]);  

            commandsPanel.add(commands[i]);  

            commands[i].setForeground(Color.red);  

        }  

        JPanel calmsPanel = new JPanel();  

        calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));  

        JPanel panel1 = new JPanel();  

        panel1.setLayout(new BorderLayout(3, 3));  

        panel1.add("North", commandsPanel);  

        panel1.add("Center", calckeysPanel);  

        JPanel top = new JPanel();  

        top.setLayout(new BorderLayout());  

        top.add("Center", resultText);  

        getContentPane().setLayout(new BorderLayout(5, 3));  

        getContentPane().add("North", top);  

        getContentPane().add("Center", panel1);  

        getContentPane().add("West", calmsPanel);  

        for (int i = 0; i < KEYS.length; i++) {  

            keys[i].addActionListener(this);  

        }  

            for (int i = 0; i < COMMAND.length; i++) {  

            commands[i].addActionListener(this);  

        }  

    }

    public void actionPerformed(ActionEvent e) {  

        String label = e.getActionCommand();  

        if (label.equals(COMMAND[0])) {  

            handleBackspace();  

        } else if (label.equals(COMMAND[1])) {  

            resultText.setText("0");  

        } else if (label.equals(COMMAND[2])) {  

            handleC();  

        } else if ("0123456789.".indexOf(label) >= 0) {  

            handleNumber(label);          

        } else {  

            handleOperator(label);  

        }  

    }  

    private void handleBackspace() {  

        String text = resultText.getText();  

        int i = text.length();  

        if (i > 0) {  

            text = text.substring(0, i - 1);  

            if (text.length() == 0) {  

                resultText.setText("0");  

                firstDigit = true;  

                operator = "=";  

            } else {  

                resultText.setText(text);  

            }  

        }  

    }  

    private void handleNumber(String key) {  

        if (firstDigit) {  

            resultText.setText(key);  

        } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) {  

            resultText.setText(resultText.getText() + ".");  

        } else if (!key.equals(".")) {  

            resultText.setText(resultText.getText() + key);  

        }  

        firstDigit = false;  

    }  

    private void handleC() {  

        resultText.setText("0");  

        firstDigit = true;  

        operator = "=";  

    }  

    private void handleOperator(String key) {  

        if (operator.equals("/")) {  

            if (getNumberFromText() == 0.0) {  

                operateValidFlag = false;  

                resultText.setText("除数不能为零");  

            } else { 

            if(firstDigit){resultNum = getNumberFromText();}

            else{resultNum /= getNumberFromText();}

            }  

        } else if (operator.equals("1/x"))

        {      

            if (resultNum == 0.0) {  

                operateValidFlag = false;  

                resultText.setText("零没有倒数");  

            } else {  

                resultNum = 1 / resultNum;  

            }  

        } else if (operator.equals("+")) {

        if(firstDigit){resultNum = getNumberFromText();}

        else{resultNum += getNumberFromText();}

        } else if (operator.equals("-")) {

        if(firstDigit){resultNum = getNumberFromText();}

        else{resultNum -= getNumberFromText();}

        } else if (operator.equals("*")) {

        if(firstDigit){  resultNum = getNumberFromText();}

        else{  resultNum *= getNumberFromText();}

        } else if (operator.equals("sqrt")) {

            resultNum = Math.sqrt(resultNum);  

        } else if (operator.equals("%")) 

        {    

            resultNum = resultNum / 100;  

        } else if (operator.equals("+/-")) {  

            resultNum = resultNum * (-1);  

        } else if (operator.equals("=")) {  

            resultNum = getNumberFromText();  

        }  

        if (operateValidFlag) {  

            long t1;  

            double t2;  

            t1 = (long) resultNum;  

            t2 = resultNum - t1;  

            if (t2 == 0) {  

                resultText.setText(String.valueOf(t1));  

            } else {  

                resultText.setText(String.valueOf(resultNum));  

            }  

        }  

        operator = key;  

        firstDigit = true;  

        operateValidFlag = true;  

    }  

    private double getNumberFromText() {  

        double result = 0;  

        try {  

            result = Double.valueOf(resultText.getText()).doubleValue();  

        } catch (NumberFormatException e) {  

        }  

        return result;  

    }  

    public static void main(String args[]) {  

        Test calculator1 = new Test();  

        calculator1.setVisible(true);  

        calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

    }  

}

交通地图:

Edge类:

public class Edge {

int bg,end;

int dist;

public Edge(int beginpoint,int endpoint,int dist)

{

bg=beginpoint;

end=endpoint;

this.dist=dist;

}

}

MGraph类:

public class MGraph {

static final int MAXSIZE=5000;

int[] P;//存储最短路径

int[] D;//存储最短距离

Edge[] paths=new Edge[100];

public MGraph(){

vexnum=citysname.length;

P = new int[vexnum];

D = new int[vexnum];

      }

int vexnum;

String[] citysname=new String[]{"张家界市","常德市","岳阳市","吉首市","益阳市","怀化市",

"邵阳市","娄底市","湘潭市","长沙市","株洲市","衡阳市","永州市","郴州市"};

  int[][] edges=new int[][]{

 {0, 157,MAXSIZE,160,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},

 {MAXSIZE, 0,183,223,98,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},

 {MAXSIZE,183,0,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,195,152,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},

 {160,223,MAXSIZE,0,MAXSIZE,136,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},

 {MAXSIZE,98,MAXSIZE,MAXSIZE,0,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,80,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},

 {MAXSIZE,MAXSIZE,MAXSIZE,136,MAXSIZE,0,214,317,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},

 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,214,0,117,193,MAXSIZE,MAXSIZE,136,124,MAXSIZE},

 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,317,117,0,120,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE},

 {MAXSIZE,MAXSIZE,195,MAXSIZE,MAXSIZE,MAXSIZE,193,120,0,41,45,MAXSIZE,300,MAXSIZE},

 {MAXSIZE,MAXSIZE,152,MAXSIZE,80,MAXSIZE,MAXSIZE,MAXSIZE,41,0,68,MAXSIZE,MAXSIZE,MAXSIZE},

 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,45,68,0,141,MAXSIZE,MAXSIZE},

 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,136,MAXSIZE,MAXSIZE,MAXSIZE,141,0,142,176},

 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,124,MAXSIZE,300,MAXSIZE,MAXSIZE,176,0,MAXSIZE},

 {MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,MAXSIZE,142,MAXSIZE,0}

  };//距离

  int[][]location=new int[][]{

 {180, 40},

 {280, 60},

 {450, 40},

 {110, 110},

 {360, 90},

 {130, 150},

 {260, 170},

 {310, 120},

 {425, 140},

 {440, 120},

 {450, 140},

 {360, 200},

 {260, 240},

 {430, 300}

  };//位置

public void shortpath(int bgcity,int endcity){

//将路径数组置空

//for(int i=0;i<paths.length;i++)paths[i]=null;

boolean[] flag=new boolean[vexnum];

for(int i=0;i<vexnum;i++){

D[i]=edges[bgcity][i];

P[i]=bgcity;

}

D[bgcity]=0;

flag[bgcity]=true;

P[bgcity]=-1;

int j=0;

for(int i=0;i<vexnum;i++){

int min=MAXSIZE+1;

for(int k=0;k<vexnum;k++){

if(flag[k]==false && D[k]<min){

j=k;

min=D[k];

}

}

flag[j]=true;

for(int k=0;k<vexnum;k++)   //更新dist数组的值和路径的值 

       {

           if(flag[k]==false && min+edges[j][k]< D[k])

           {

               D[k]=min+edges[j][k];

               P[k]=j; 

           }

       }  

}

mypath( bgcity, endcity);

}

  private void mypath(int bgcity,int endcity){

 int i,j;

i=endcity;

j=i;

int n=0;

while(P[j]!=-1){

Edge line=new Edge(P[j],j,D[j]);

paths[n++]=line;

j=P[j];

}

  }

}

MyCanvas类:

import java.awt.BasicStroke;

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

public class MyCanvas extends Canvas {

Edge[] paths;

MGraph G;

public MyCanvas(MGraph G){

this.G=G;//将图引用对象赋值

}

public void paint( Graphics g){

//绘制方框

g.drawRect(20, 20, 560, 360);

//g.setColor(Color.white);

for(int i=0;i<G.citysname.length;i++)

{

for(int j=i+1;j<G.citysname.length;j++)

{

if(G.edges[i][j]<G.MAXSIZE)

{

g.drawLine(G.location[i][0], G.location[i][1], G.location[j][0], G.location[j][1]);

}

}

//g.setColor(Color.blue);

g.drawString(G.citysname[i], G.location[i][0], G.location[i][1]);

g.setColor(Color.blue);

g.fillArc(G.location[i][0]-3, G.location[i][1]-3, 8, 8, 0, 360);

g.setColor(Color.black);

}

//绘制计算的路径

paths=G.paths;

int i=0;

g.setColor(Color.red);

((Graphics2D)g).setStroke(new BasicStroke(3.0f));

int distance=0;

int bc=0,ec=0;

int bg=0,end=0;

while(paths[i]!=null){

//将改边绘制出来

int x1,y1,x2,y2;

bg=paths[i].bg;

end=paths[i].end;

x1=G.location[bg][0];

y1=G.location[bg][1];

x2=G.location[end][0];

y2=G.location[end][1];

g.setColor(Color.red);

g.drawLine(x1, y1, x2, y2);

if(i == 0 ){

ec = end;

}

distance+=G.edges[bg][end];

g.setColor(Color.red);

g.drawLine(x1, y1, x2, y2);

g.setColor(Color.black);

g.drawString(G.edges[bg][end]+"",(x1+x2)/2 , (y1+y2)/2);

i++;

}

bc=bg;

g.setColor(Color.black);

g.drawString(distance + "km", 120, 245);

g.setColor(Color.blue);

g.drawString(G.citysname[bc], 50, 250);

g.drawString(G.citysname[ec], 180, 250);

g.setColor(Color.red);

g.drawLine(102, 250, 178, 250);

}

}

MyFrame类:

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

public class MyFrame extends JFrame implements ActionListener {

JComboBox cb1,cb2;

MGraph G;

MyCanvas mycanvas;

public MyFrame(){

G=new MGraph();//创建图不能再创建了,通过引用完成

this.setTitle("1406405026马昌辉的系统");

this.setSize(600,500);

this.setLocationRelativeTo(null);

setResizable(false);

Container p=this.getContentPane();

JLabel lb1=new JLabel("湖南省高速公路交通图");

JPanel pp=new JPanel();

pp.add(lb1);

p.add(pp,BorderLayout.NORTH);

mycanvas=new MyCanvas(G);//考虑画板也需要图

mycanvas.setBackground(Color.white);

p.add(mycanvas,BorderLayout.CENTER);

String[] citysname=new String[]{"张家界市","常德市","岳阳市","吉首市","益阳市","怀化市",

"邵阳市","娄底市","湘潭市","长沙市","株洲市","衡阳市","永州市","郴州市"};

JPanel pl1;

JButton bt;

cb1=new JComboBox(citysname);

cb1.setMaximumRowCount(5);

cb2=new JComboBox(citysname);

cb2.setMaximumRowCount(5);

bt=new JButton("搜索");

bt.addActionListener(this);

GridBagLayout grdb=new GridBagLayout();

pl1=new JPanel();

pl1.setLayout(grdb);

JLabel lb2= new JLabel("选择起始城市:");

pl1.add(lb2);

pl1.add(cb1);

JLabel lb3=new JLabel("----->");

pl1.add(lb3);

pl1.add(cb2);

pl1.add(bt);

     JPanel Pl2 = new JPanel();

p.add(pl1,BorderLayout.SOUTH);

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭选项

}

public static void main(String[] args) {

MyFrame App = new MyFrame();

}

@Override

public void actionPerformed(ActionEvent e) {

// 获得你选择的开始城市和终点城市

int bgcity,endcity;

bgcity=cb1.getSelectedIndex();

endcity=cb2.getSelectedIndex();

if(bgcity==endcity)return ;

//完成路径数组的清空

G.shortpath(bgcity, endcity);

int i=0;

while(G.paths[i]!=null)G.paths[i++]=null;

//计算最短路径

G.shortpath(bgcity, endcity);

//视图需要更新

cb1.repaint();

cb2.repaint();

this.repaint();//仅更新frame

mycanvas.repaint();

}

}

猜诗词:

import java.awt.BorderLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Random;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

import org.omg.CORBA.PUBLIC_MEMBER;

public class MyFrame extends JFrame implements ActionListener {

static JTextField jField;

static JButton[] b;

JPanel j1;

JPanel jp;

String string = null;

public MyFrame() {

JFrame jf = new JFrame("窗口");

j1 = new JPanel();

jField = new JTextField(20);

JButton jb1 = new JButton("撤销");

JButton jb2 = new JButton("提交");

j1.add(jField);

j1.add(jb1);

j1.add(jb2);

jf.add(j1, BorderLayout.NORTH);

jp = new JPanel();

string = "白日依山尽";

b = new JButton[string.length()];

for (int i = 0; i < string.length(); i++) {

b[i] = new JButton(string.substring(i, i + 1));

b[i].addActionListener(new Myactionlistener());

if (i == string.length() - 1) {

for (int j = 0; j < i; j++) {

Random random = new Random();

int nextInt = random.nextInt(string.length());

int count = 0;

while (count <= b.length) {

for (JButton ll : b) {

while (b[nextInt].getText().equals(ll.getText())) {

nextInt = random.nextInt(string.length());

}

jp.add(b[nextInt]);

count++;

}

}

}

}

}

jf.add(jp, BorderLayout.CENTER);

jf.setSize(500, 500);

jf.setResizable(false);

Toolkit tk = Toolkit.getDefaultToolkit();

int swidth = tk.getScreenSize().width;

int sheight = tk.getScreenSize().height;

jf.setLocation((swidth - 500) / 2, (sheight - 500) / 2);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.setVisible(true);

// jf.pack();

jb1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) {

if (arg0.getSource() == jb1) {

jField.setText(jField.getText().substring(0, jField.getText().length() - 1));

}

}

});

jb2.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) {

if (jField.getText().equals(string)) {

int confirmDialog = JOptionPane.showConfirmDialog(MyFrame.this, "是否进入下一关");

if (confirmDialog == JOptionPane.YES_OPTION) {

for (int i = 0; i < b.length; i++) {

jp.remove(b[i]);

jp.validate();

}

jf.remove(jp);

jf.validate();

} else {

System.exit(1);

}

} else {

JOptionPane.showMessageDialog(MyFrame.this, "输入错误");

}

}

});

}

@Override

public void actionPerformed(ActionEvent e) {

}

public static void main(String[] args) {

MyFrame m = new MyFrame();

}

}

class Myactionlistener implements ActionListener {

@Override

public void actionPerformed(ActionEvent arg0) {

for (int i = 0; i < MyFrame.b.length; i++) {

if (arg0.getSource() == MyFrame.b[i]) {

String ss = MyFrame.jField.getText() + MyFrame.b[i].getText();

MyFrame.jField.setText(ss);

}

}

}

}