1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình java phần 1

48 662 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 48
Dung lượng 195,45 KB

Nội dung

Trong topic này Tôi muốn hướng dẫn các bạn cách mở các cửa sổ windows khác trong Java .Tình huống: Bạn quan sát hình Tôi chụp bên dưới, từ 1 cửa sổ chính chứa 2 JButton, mỗi JButton sẽ có chức năng mở các cửa sổ khác nhau. Ở đây Tôi muốn hướng dẫn 2 tình huống đó là mở 1 JFrame và 1 JDialog khác để từ đó các bạn có thể tham khảo áp dụng cho các chương trình tương tự. Bạn phải biết được sự khác biết giữa JFrame và JDialog (mặc định Tôi cho là các bạn đã biết )

Trang 1

—————————————-Tôi cung cấp cho các bạn 3 class:

class MyMainUI sẽ chứa 2 JButton : Open MyUI1 và Open MyUI2

class MyUI1 kế thừa từ JFrame

class MyUI2 kế thừa từ JDialog

Trang 2

public class MyMainUI extends JFrame{

private static final long serialVersionUID = 1L;

public MyMainUI(String title)

Trang 3

JPanel pnBox=new JPanel();

JButton btn1=new JButton(“Open MyUI1”);JButton btn2=new JButton(“Open MyUI2”);pnBox.add(btn1);

pnBox.add(btn2);

btn1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {MyUI1 ui1=new MyUI1(“Hello Teo!”);

ui1.setVisible(true);

}

});

btn2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {MyUI2 ui2=new MyUI2(“Hello Teo!”);

Trang 4

public static void main(String[] args) {

MyMainUI mainUI=new MyMainUI(“Demo OPen Another Windows”);

Trang 5

import javax.swing.JTextField;

public class MyUI1 extends JFrame{

private static final long serialVersionUID = 1L;

public MyUI1(String title)

JPanel pn=new JPanel();

JButton btn1=new JButton(“Hello I’m JFrame”);JTextField txt1=new JTextField(15);

Trang 6

public class MyUI2 extends JDialog{

private static final long serialVersionUID = 1L;

public MyUI2(String title)

Trang 7

JPanel pn=new JPanel();

JButton btn1=new JButton(“Hi ! My name is JDialog”);JButton btn2=new JButton(“Click me!”);

JTextField txt1=new JTextField(15);

JLabel lbl1=new JLabel(“Hello! Hello!”);

public void actionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(null, “Click tui hả?”);

Trang 8

– JFileChooser

Trang 9

-Cho phép lưu đối tượng xuống ổ cứng và đọc đối tượng lên giao diện

Mô tả:

Cho phép nhập xuất danh sách các danh mục sản phẩm, các sản phẩm của từng danh mục, các chức năng thêm sửa xóa, lưu tập tin

Các em tham khảo và tiếp tục hoàn thiện những phần Thầy chưa làm.

Cũng như các ví dụ trước, Thầy không ghi chú, các em ráng đọc hiểu, vì cách sử dụng control Thầy đã hướng dẫn kỹ trên lớp

Cấu trúc file chương trình gồm có:

Product.java : dùng để lưu thông tin của từng sản phẩm

Category.java: dùng để lưu danh mục sản phẩm và lưu danh sách các sản phẩm của từng danh mục

ListCategory.java: dùng để lưu danh sách các danh mục

MyProcessFile.java: dùng để xử lý tập tin: lưu và đọc đối tượng trên ổ cứng

MainManagerUI.java: lớp giao diện chính của chương trình

CategoryManagerUI.java: lớp giao diện phụ để cập nhật thông tin của danh mục TestMain.java: dùng để chạy chương trình chính

Giao diện chính của chương trình như sau:

Trang 10

Khi bấm vào nút New của danh mục sẽ hiển thị màn hình cập nhật danh mục:

Coding mẫu:

Product.java

importjava.io.Serializable;public class Product implements Serializable {

private static final long serialVersionUID = 1L;

private String productId;

private String productName;

Trang 11

private String description;

private double unitPrice;

private int quantity;

public String getProductId() {

Trang 12

public double getUnitPrice() {

Trang 13

public class Category implements Serializable {

private static final long serialVersionUID = 1L;

private String cateId;

private String cateName;

private ArrayList<Product>listPro=new ArrayList<Product>();public String getCateId() {

Trang 15

Product pFind=findProductById(p.getProductId());if(pFind!=null)

Trang 16

public void removeProductByIndex(String index)

public class ListCategory implements Serializable {

private static final long serialVersionUID = 1L;

private ArrayList<Category>listCate=new ArrayList<Category>();public Category findCateById(String id)

{

Trang 17

for(Category cate: listCate)

Trang 18

public class MyProcessFile {

public static void saveData(Object list,String fileName){

try

{

FileOutputStream fOut=new FileOutputStream(fileName);ObjectOutputStream oOut=new ObjectOutputStream(fOut);oOut.writeObject(list);

}

catch(Exception ex)

Trang 21

public class MainManagerUI extends JFrame {

private static final long serialVersionUID = 1L;

private static JList lstCate;

private JTable tblProduct;

private DefaultTableModel dtmProduct;

private JButton btnCateRemove,btnCateNew,btnCateUpdate,btnNew,btnSave,btnRemove;private JTextField txtId,txtName,txtUnitprice,txtQuantity;

private JTextArea txtDescription;

private static JComboBox cboCateList;

JMenuBar menubar;

JMenu mnuFile;

JMenuItem mnuFileOpenDataFromDisk,mnuFileWritetodisk,mnuFileExit;

Trang 22

public static ListCategory listData;

public static Category selectedCate;

public MainManagerUI(String title)

mnuFileWritetodisk=new JMenuItem(“Write Data to disk”);

mnuFileOpenDataFromDisk=new JMenuItem(“Open Data from disk”);

Trang 23

mnuFileExit =new JMenuItem(“Exit”);

menubar.add(mnuFile);

mnuFile.add(mnuFileWritetodisk);

mnuFile.add(mnuFileOpenDataFromDisk);mnuFile.addSeparator();

JPanel pnNorth=new JPanel();

JLabel lblTitle=new JLabel(“Quản lý sản phẩm”);

Font ftTitle=new Font(“arial”, Font.BOLD, 32);

Trang 24

JPanel pnListProduct=new JPanel();

JSplitPane slitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pnListCate,

JPanel pnListCateSouth=new JPanel();

btnCateNew =new JButton(“New”);

JPanel pnProductTitle=new JPanel();

JLabel lblProductTitle=new JLabel(“Thông tin chi tiết”);

Trang 25

pnProductDetail.setLayout(new BoxLayout(pnProductDetail, BoxLayout.Y_AXIS ));

JPanel pnCateList=new JPanel();

JLabel lblCateId=new JLabel(“Category :”);

cboCateList=new JComboBox();

pnCateList.add(lblCateId);

Trang 26

pnProductDetail.add(pnCateList);

JPanel pnProductId=new JPanel();

JLabel lblProId=new JLabel(“Product ID:”);

txtId=new JTextField(20);

pnProductId.add(lblProId);

pnProductId.add(txtId);

pnProductDetail.add(pnProductId);

JPanel pnProductName=new JPanel();

JLabel lblProName=new JLabel(“Product Name:”);txtName=new JTextField(20);

pnProductName.add(lblProName);

pnProductName.add(txtName);

pnProductDetail.add(pnProductName);

JPanel pnProductUnitPrice=new JPanel();

JLabel lblUnitPrice=new JLabel(“Unit Price:”);txtUnitprice=new JTextField(20);

Trang 27

JLabel lblQuantity=new JLabel(“Quantity:”);

txtQuantity=new JTextField(20);

pnProductQuantity.add(lblQuantity);

pnProductQuantity.add(txtQuantity);

pnProductDetail.add(pnProductQuantity);

JPanel pnProductDescription=new JPanel();

JLabel lblDescription=new JLabel(“Description:”);txtDescription=new JTextArea(4, 20);

JScrollPane scare=new JScrollPane(txtDescription);pnProductDescription.add(lblDescription);

Trang 29

cboCateList.removeAllItems();

Trang 30

for(Category cate : listData.getList())

Trang 34

public class CategoryManagerUI extends JFrame{

private static final long serialVersionUID = 1L;

private JTextField txtId,txtName;

private JButton btnOk;

public CategoryManagerUI(String title)

Trang 35

JPanel pnBox=new JPanel();

pnBox.setLayout(new BoxLayout(pnBox, BoxLayout.Y_AXIS));

JPanel pnId=new JPanel();

txtId=new JTextField(15);

txtName=new JTextField(15);

JLabel lblId=new JLabel(“Cate Id:”);

JLabel lblName=new JLabel(“Cate Name:”);

Trang 36

public void actionPerformed(ActionEvent arg0) {

Category cate=new Category(txtId.getText(), txtName.getText());

public class TestMain {

public static void main(String[] args) {

MainManagerUI uiProduct=new MainManagerUI(“Quản lý sản phẩm!”);

Trang 38

Trong ví dụ này Tôi sẽ cung cấp 2 class.

Class 1 tên là PTB2UI dùng để thiết kế giao diện

class 2 tên là PTB2Engine dùng để giải phương trình bậc 2, có 3 thông số được truyền vào là a,b,c lấy từ giao diện

Ví dụ này có kiểm tra tính hợp lệ của dữ liệu nhập vào, các bạn xem các dòng lệnh try…catch

Tôi không có giải thích nhiều về code nữa, vì đã giải thích trong các bài giảng rồi, hi vọng các em cố gắng đọc hiểu Có rất nhiều cách làm!

Trang 39

import javax.swing.border.*;

public class PTB2UI extends JFrame {

private static final long serialVersionUID = 1L;

public PTB2UI(String title)

Trang 40

JLabel lblTitle=new JLabel(“Giải phương trình bậc 2”);pnNorth.add(lblTitle);

pnBorder.add(pnNorth,BorderLayout.NORTH);

lblTitle.setForeground(Color.BLUE);

Font ft=new Font(“arial”, Font.BOLD, 25);

lblTitle.setFont(ft);

JPanel pnSouth=new JPanel();

JButton btnGiai=new JButton(“Giải”);

JButton btnXoa=new JButton(“Xóa”);

JButton btnThoat=new JButton(“Thoát”);

Trang 41

pnCenter.setLayout(new BoxLayout(pnCenter, BoxLayout.Y_AXIS)); pnBorder.add(pnCenter,BorderLayout.CENTER);

JPanel pna=new JPanel();

JLabel lbla=new JLabel(“nhập a:”);

final JTextField txta=new JTextField(15);

pna.add(lbla);

pna.add(txta);

pnCenter.add(pna);

JPanel pnb=new JPanel();

JLabel lblb=new JLabel(“nhập b:”);

final JTextField txtb=new JTextField(15);

pnb.add(lblb);

pnb.add(txtb);

pnCenter.add(pnb);

JPanel pnc=new JPanel();

JLabel lblc=new JLabel(“nhập c:”);

Trang 42

final JTextField txtc=new JTextField(15);

pnc.add(lblc);

pnc.add(txtc);

pnCenter.add(pnc);

JPanel pnkq=new JPanel();

JLabel lblkq=new JLabel(“kết quả nè:”);

final JTextField txtkq=new JTextField(15);

public void actionPerformed(ActionEvent arg0) {

int ret=JOptionPane.showConfirmDialog(null, “Muốn thoát hả?”, “Thoát”, JOptionPane.YES_NO_OPTION);

if(ret==JOptionPane.YES_OPTION)

System.exit(0);

}

});

Trang 43

public void actionPerformed(ActionEvent arg0) {

Trang 45

public static void main(String[] args) {

PTB2UI ui=new PTB2UI(“ptb2”);

Trang 46

===============

public classPTB2Engine {private inta;private intb;private int c;

public PTB2Engine(int a,int b,int c)

Trang 47

}

Trang 48

return kq;

}

}

Ngày đăng: 15/08/2017, 19:39

TỪ KHÓA LIÊN QUAN

w