天天看點

java gui textfield_Java GUI 實作個人資訊錄入

原标題:Java GUI 實作個人資訊錄入

我們的資訊可以儲存在資料庫也可以儲存在檔案中,我們通過java圖形界面的形式錄入資料,然後儲存在檔案中。

package com.xfonlineclass;

import java.awt.EventQueue;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.*;

import javax.swing.*;

public class AddressList extends JFrame implements ActionListener {

private static final long serialVersionUID = 1533432567332718336L;

private JTextField phonetextField; // 建立文本框元件

private JTextField emailtextField;

private JTextField nametextField;

final JPanel panel = new JPanel(); // 建立面闆元件

JMenu fileMenu; // 定義菜單對象

JMenuItem reveal;

JMenuItem kinescope;

JPanel jPanel = new JPanel();

File file = new File("D://addressList.txt"); // 建立檔案對象

public static void main(String args[]) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

AddressList frame = new AddressList(); // 建立本類對象

frame.setVisible(true); // 設定窗體可視狀态

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

public AddressList() { // 構造方法中實作窗體布局

super();

setTitle("個人通訊錄"); // 設定窗體标題

getContentPane().setLayout(null); // 設定窗體布局

setBounds(100, 100, 382, 237);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JMenuBar bar = new JMenuBar();

fileMenu = new JMenu("檔案");

reveal = new JMenuItem("顯示");

kinescope = new JMenuItem("錄入");

reveal.addActionListener(this);

kinescope.addActionListener(this);

this.setJMenuBar(bar);

bar.add(fileMenu);

fileMenu.add(reveal);

fileMenu.add(kinescope);

panel.setLayout(null);

panel.setBounds(0, 0, 374, 178);

getContentPane().add(panel);

final JLabel namelabel = new JLabel();

namelabel.setBounds(77, 29, 66, 18);

namelabel.setText("輸入姓名:");

panel.add(namelabel);

nametextField = new JTextField();

nametextField.setBounds(149, 27, 122, 22);

panel.add(nametextField);

final JLabel emaillabel = new JLabel();

emaillabel.setBounds(77, 66, 66, 18);

emaillabel.setText("輸入Email:");

panel.add(emaillabel);

emailtextField = new JTextField();

emailtextField.setBounds(149, 64, 122, 22);

panel.add(emailtextField);

final JLabel phonelabel = new JLabel();

phonelabel.setText("輸入電話:");

phonelabel.setBounds(77, 103, 66, 18);

panel.add(phonelabel);

phonetextField = new JTextField();

phonetextField.setBounds(149, 101, 122, 22);

panel.add(phonetextField);

final JLabel label = new JLabel();

label.setText("單擊錄入:");

label.setBounds(77, 137, 66, 18);

panel.add(label);

final JButton kinbutton = new JButton();

kinbutton.addActionListener(new ActionListener() {

public void actionPerformed(final ActionEvent e) {

kinbuttonActionPerformed(e);

}

});

kinbutton.setText("錄入");

kinbutton.setBounds(149, 132, 122, 28);

panel.add(kinbutton);

}

private void kinbuttonActionPerformed(java.awt.event.ActionEvent evt) {

try {

if (nametextField.getText().equals("") || (emailtextField.getText().equals("")) || (phonetextField.getText().equals(""))) { // 如果使用者沒有将資訊輸入完整

JOptionPane.showMessageDialog(this, "請輸入完整内容", "資訊提示框", JOptionPane.WARNING_MESSAGE); // 給出提示資訊

return; // 退出程式

}

if (!file.exists()) // 如果檔案不存在

file.createNewFile(); // 建立檔案

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true))); // 建立BufferedWriter對象

out.write("姓名:" + nametextField.getText() + ", "); // 向檔案中寫内容

out.write("郵箱:" + emailtextField.getText() + ", ");

out.write("電話:" + phonetextField.getText());

out.newLine(); // 建立一行

out.close(); // 關閉流

} catch (Exception e1) {

e1.printStackTrace();

}

}

@Override

public void actionPerformed(ActionEvent e) {

if (e.getSource() == reveal) { // 如果使用者單擊的是顯示菜單項

try {

getContentPane().remove(panel);

jPanel.setLayout(null); // 設定窗體布局

jPanel.setBounds(0, 0, 374, 178);

JTextArea jtextarea = new JTextArea(20, 10); // 建立文本域對象

jtextarea.setBounds(0, 0, 374, 178); // 設定文本域顯示位置與大小

getContentPane().add(jPanel); // 窗體中添加面闆

jPanel.add(jtextarea); // 向面闆中添加文本域

BufferedReader in = new BufferedReader(new FileReader(file)); // 建立BufferedReader

// 對象

String name = null;

int number = 1;

while ((name = in.readLine()) != null) { // 循環從檔案中讀資料

jtextarea.append("\n" + number + "、 " + name); // 将讀取資料顯示在文本域中

name = new String(name);

number++;

}

in.close();

repaint();

} catch (Exception e1) {

e1.printStackTrace();

}

}

if (e.getSource() == kinescope) { // 如果使用者單擊錄入菜單項

getContentPane().remove(jPanel); // 将面闆移除窗體

getContentPane().add(panel);

repaint(); // 窗體重繪

}

}

責任編輯: