XtGem Forum catalog
logo

Chatbox|Admin nhận làm wap/web, giá cả thương lượng... Thông tin admin tại mỗi bài viết.
Home · Bang hội ·
* Đăng Nhập hoặc Đăng Kí
để sử dụng hết chức năng của diễn đàn.
Hi, Khách!
HomeBang hội » Thủ thuật » Nokia s40 » 27 bài tập mẫu viết bằng code java để tiếp cận java dễ dàng hơn
Xuống dưới » 27 bài tập mẫu viết bằng code java để tiếp cận java dễ dàng hơn
avatar by Pham_loi Pham_loi
Chức vụ:
13:56:12, 17-07-2015

Bài 27 - JOptionPane cơ bản
Đây có thể nói là công cụ Dialog mạnh nhất
Trước tiên hãy xem qua ví dụ sau
import javax.swing.*;
class Core
{
        public static void main(String args[)
        {
                JFrame f = new JFrame("My frame");
                JOptionPane.showMessageDialog(f,"Hien thi cau thong bao","Hien thi tieu de",JOptionPane.ERROR_MESSAGE);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
        }
}

Copy code

JOptionPane bao gồm các thành phần chính sau đây: Title, Icon, Message, InputValue và OptionButtons. Không cần bao gồm đủ tất cả
* Khởi tạo của JOptionPane
JOptionPane(Object message, int messageType, int optionType, Icon icon, Object[ options)
Bạn có thể thíêu bất cứ thành phần nào thậm chí có thể thiếu hết
Object message: câu thông báo hiển thị trên JOptionpane
int messageType: bao gồm ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, và PLAIN_MESSAGE
int optionType: bao gồm DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION
Icon icon: hình icon của JOptionPane
Ví dụ:
import javax.swing.*;
class Core
{
        public static void main(String args[)
        {
                JFrame f = new JFrame("My frame");
                f.add(new JOptionPane("Hien thi cau thong bao", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_CANCEL_OPTION));
                f.setSize(250,150);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
        }
}

Copy code
* Các phương thức (hay sử dụng hơn)
void showMessageDialog(Component parentComponent, Object message, String title, int messageType)
String showInputDialog(Component parentComponent, Object message, String title, int messageType)
int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType) Yes trả về 0 và No trả về 1.
Nguồn: sinhvienit

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
13:55:35, 17-07-2015

Bài 25 - JToolBar
JToolBar (thanh công cụ) giống y như bạn thường thấy trong các ứng dụng Windows. Nó bao gồm nhiều JButton, mỗi JButton có một Icon riêng. Trước hết hãy chuẩn bị vài hình .gif 24x24 cho ví dụ này. Nếu không tìm thấy thì chép từ jdk1.5.0\demo\plugin\jfc\Stylepad\resources. Chép vào thư mục chứa mã nguồn
import javax.swing.*;
import java.awt.*;
class Core
{
        public static void main(String args[)
        {
                JFrame f = new JFrame("My frame");
                JToolBar t=new JToolBar();
                String[ label={"New","Open","Save","Cut","Copy","Paste","Bold","Italic","Underline","Left","Right","Center"};
                String[ file={"new.gif","open.gif","save.gif","cut.gif","copy.gif","paste.gif","bold.gif","italic.gif","underline.gif","left.gif","right.gif","center.gif"};
                ImageIcon[ icon=new ImageIcon[label.length;
                JButton[ b=new JButton[label.length;
                for(int i=0;i<label.length;i++)
                {
                        icon|i|=new ImageIcon(file|i|);
                        b|i|=new JButton(icon|i|);
                        b|i|.setToolTipText(label|i|);
                        t.add(b|i|);
                        if((i==2)||(i==5)||(i==8)) t.addSeparator();
                }
                f.add(t);
                f.setSize(600,70);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
        }
}

Copy code

Bài 26 - JTable
* JTable hiển thị dữ liệu có sẵn
import javax.swing.*;
import java.awt.*;
class Core
{
        public static void main(String args[)
        {
                JFrame f = new JFrame("My frame");
                String[[ dat={{"1","JCreator","Xinox","Beginer"},
                                                {"2","jGRASP","Auburn","Medium"},
                                                {"3","NetBeans","Sun Microsystems","Expert"},
                                                {"4","Gel","GExperts","Beginer"},
                                                {"5","Eclipse","Eclipse","Expert"},
                                                {"6","JBuilder","Borland","Expert"}};
                String[ columnName={"ID","Name","Company","Rank"};
                JTable t=new JTable(dat,columnName);
                JScrollPane s=new JScrollPane(t);
                f.add(s);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(400,100);
                f.setVisible(true);
        }
}

Copy code
* Thao tác trực tiếp dữ liệu trong từng ô của bảng
Trong ví dụ dưới chúng ta sẽ thay đổi dữ liệu của cột "Rank" bằng một JComboBox, sử dụng class TableColumn
import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
class Core
{
        public static void main(String args[)
        {
                JFrame f = new JFrame("My frame");
                String[[ dat={{"1","JCreator","Xinox","Beginer"},
                                                {"2","jGRASP","Auburn","Medium"},
                                                {"3","NetBeans","Sun Microsystems","Expert"},
                                                {"4","Gel","GExperts","Beginer"},
                                                {"5","Eclipse","Eclipse","Expert"},
                                                {"6","JBuilder","Borland","Expert"}};
                String[ columnName={"ID","Name","Company","Rank"};
                JTable t=new JTable(dat,columnName);
                JScrollPane s=new JScrollPane(t);
                f.add(s);
                JComboBox c=new JComboBox(new String[{"Low","High","Extremely"});
                TableColumn rankColumn=t.getColumn("Rank");
                rankColumn.setCellEditor(new DefaultCellEditor(c));
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(400,100);
                f.setVisible(true);
        }
}

Copy code

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
13:54:33, 17-07-2015

Bài 21 - JCheckbox
* JCheckBox tương tự Checkbox
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
        public static void main(String args[)
        {
                JFrame frame = new JFrame("My frame");
                JCheckBox checkbox=new JCheckBox("Documents",false);
                checkbox.addItemListener(new ItemListener()
                {
                        public void itemStateChanged(ItemEvent e)
                        {
                                System.out.println("Changed");
                        }
                });
                frame.add(checkbox);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
        }
}

Copy code

Bài 22 - JRadioButton và ButtonGroup
* JRadioButton và ButtonGroup tương tự Checkbox và CheckboxGroup
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
        public static void main(String args[)
        {
                com.incors.plaf.alloy.AlloyLookAndFeel.setProperty("alloy.licenseCode","v#ej_technologies#uwbjzx#e6pck8");
                final JFrame f = new JFrame("My f");
                final String[ a={"Metal","Windows","Motif","XP","Alloy"};
                final JRadioButton[ b=new JRadioButton[a.length;
                final String[ c=new String[a.length;
                c[0="javax.swing.plaf.metal.MetalLookAndFeel";
                c[1="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
                c[2="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
                c[3="com.stefankrause.xplookandfeel.XPLookAndFeel";
                c[4="com.incors.plaf.alloy.AlloyLookAndFeel";
                ButtonGroup g=new ButtonGroup();
                JPanel p=new JPanel();
                f.add(p);
                for(int i=0;i<a.length;i++)
                {
                        b|i|=new JRadioButton(a|i|);
                        g.add(b|i|);
                        p.add(b|i|);
                        b|i|.addItemListener(new ItemListener()
                        {
                                public void itemStateChanged(ItemEvent e)
                                {
                                        for(int j=0;j<a.length;j++)
                                        {
                                                if(e.getSource()==b[j)
                                                {
                                                        try
                                                        {
                                                                UIManager.setLookAndFeel(c[j);
                                                        }
                                                        catch(Exception exception)
                                                        {
                                                                System.out.println("LaF not found");
                                                        }
                                                        SwingUtilities.updateComponentTreeUI(f);
                                                }
                                        }
                                }
                        });
                }
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
        }
}

Copy code

Bài 23 - JComboBox và JList
* JComboBox tương tự như Choice

import javax.swing.*;
import java.awt.*;
class Core
{
        public static void main(String args[)
        {
                JFrame f = new JFrame("My frame");
                String[ label={"ASM","C\C++","VB","Java"};
                JComboBox box=new JComboBox(label);
                f.add(box);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(100,55);
                f.setVisible(true);
        }
}

Copy code


* JList tương tự List nhưng nó lại không tự kéo thả được như List, cần có sự hỗ trợ của JScrollPane

import javax.swing.*;
import java.awt.*;
class Core
{
        public static void main(String args[)
        {
                JFrame f = new JFrame("My frame");
                String[ label={"ASM","Pascal","C\C++","VB","Java"};
                JList l=new JList(label);
                ScrollPane s=new ScrollPane();
                s.add(l);
                f.add(s);
                f.setSize(100,100);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
        }
}

Copy code


* Còn lại thì JMenuBar,JMenu,JMenuItem tương tự MenuBar,Menu,MenuItem

Bài 24 - JTabbedPane
Đây gọi là đối tượng phân trang. Ví dụ dưới đây minh họa 1 trong các phương thức addTab là JTabbedPane.addTab(String title,Component component) Các component trong ví dụ đều là các JButton
import javax.swing.*;
import java.awt.*;
class Core
{
                public static void main(String args[)
                {
                                JFrame f = new JFrame("My frame");
                                String[ label={"ASM","Pascal","C\C++","VB","Java"};
                                JButton[ b=new JButton[label.length;
                                JTabbedPane p=new JTabbedPane();
                                for(int i=0;i<label.length;i++)
                                {
                                                b|i|=new JButton(label|i|);
                                                p.addTab(label|i|,b|i|);
                                }
                                f.add(p);
                                f.setSize(300,100);
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                f.setVisible(true);
                }
}

Copy code

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
13:54:05, 17-07-2015

Bài 21 - JCheckbox
* JCheckBox tương tự Checkbox
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
        public static void main(String args[)
        {
                JFrame frame = new JFrame("My frame");
                JCheckBox checkbox=new JCheckBox("Documents",false);
                checkbox.addItemListener(new ItemListener()
                {
                        public void itemStateChanged(ItemEvent e)
                        {
                                System.out.println("Changed");
                        }
                });
                frame.add(checkbox);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
        }
}

Copy code

Bài 22 - JRadioButton và ButtonGroup
* JRadioButton và ButtonGroup tương tự Checkbox và CheckboxGroup
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
        public static void main(String args[)
        {
                com.incors.plaf.alloy.AlloyLookAndFeel.setProperty("alloy.licenseCode","v#ej_technologies#uwbjzx#e6pck8");
                final JFrame f = new JFrame("My f");
                final String[ a={"Metal","Windows","Motif","XP","Alloy"};
                final JRadioButton[ b=new JRadioButton[a.length;
                final String[ c=new String[a.length;
                c[0="javax.swing.plaf.metal.MetalLookAndFeel";
                c[1="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
                c[2="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
                c[3="com.stefankrause.xplookandfeel.XPLookAndFeel";
                c[4="com.incors.plaf.alloy.AlloyLookAndFeel";
                ButtonGroup g=new ButtonGroup();
                JPanel p=new JPanel();
                f.add(p);
                for(int i=0;i<a.length;i++)
                {
                        b|i|=new JRadioButton(a|i|);
                        g.add(b|i|);
                        p.add(b|i|);
                        b|i|.addItemListener(new ItemListener()
                        {
                                public void itemStateChanged(ItemEvent e)
                                {
                                        for(int j=0;j<a.length;j++)
                                        {
                                                if(e.getSource()==b[j)
                                                {
                                                        try
                                                        {
                                                                UIManager.setLookAndFeel(c[j);
                                                        }
                                                        catch(Exception exception)
                                                        {
                                                                System.out.println("LaF not found");
                                                        }
                                                        SwingUtilities.updateComponentTreeUI(f);
                                                }
                                        }
                                }
                        });
                }
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
        }
}

Copy code

Bài 23 - JComboBox và JList
* JComboBox tương tự như Choice

import javax.swing.*;
import java.awt.*;
class Core
{
        public static void main(String args[)
        {
                JFrame f = new JFrame("My frame");
                String[ label={"ASM","C\C++","VB","Java"};
                JComboBox box=new JComboBox(label);
                f.add(box);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(100,55);
                f.setVisible(true);
        }
}

Copy code


* JList tương tự List nhưng nó lại không tự kéo thả được như List, cần có sự hỗ trợ của JScrollPane

import javax.swing.*;
import java.awt.*;
class Core
{
        public static void main(String args[)
        {
                JFrame f = new JFrame("My frame");
                String[ label={"ASM","Pascal","C\C++","VB","Java"};
                JList l=new JList(label);
                ScrollPane s=new ScrollPane();
                s.add(l);
                f.add(s);
                f.setSize(100,100);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
        }
}

Copy code


* Còn lại thì JMenuBar,JMenu,JMenuItem tương tự MenuBar,Menu,MenuItem

Bài 24 - JTabbedPane
Đây gọi là đối tượng phân trang. Ví dụ dưới đây minh họa 1 trong các phương thức addTab là JTabbedPane.addTab(String title,Component component) Các component trong ví dụ đều là các JButton
import javax.swing.*;
import java.awt.*;
class Core
{
                public static void main(String args[)
                {
                                JFrame f = new JFrame("My frame");
                                String[ label={"ASM","Pascal","C\C++","VB","Java"};
                                JButton[ b=new JButton[label.length;
                                JTabbedPane p=new JTabbedPane();
                                for(int i=0;i<label.length;i++)
                                {
                                                b|i|=new JButton(label|i|);
                                                p.addTab(label|i|,b|i|);
                                }
                                f.add(p);
                                f.setSize(300,100);
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                f.setVisible(true);
                }
}

Copy code

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
13:52:19, 17-07-2015

Bài 20 - Cách sử dụng LaF của hãng thứ 3:
Cách 1: coi nó như là 1 add-in plugin, tức là đưa cái file .jar chứa class mình cần vào thư mục jdk1.5.0\jre\lib\ext rồi cứ thế điều chỉnh className cho phù hợp
Cách 2: giải nén file .jar ra và tống thẳng nó vào gói jdk1.5.0\jre\lib\rt.jar
Ví dụ: bạn DOWN được gói xplookandfeel.jar và chép nó theo cách 1
Bạn hãy mở file readme của gói này ra và tìm thấy className của nó là "com.stefankrause.xplookandfeel.XPLookAndFeel" thì đưa thêm nó vào
* LaF có bản quyền (ở đây lấy ví dụ là Alloy-có cả mã)
Để sử dụng LaF có bản quyền bạn setProperty cho nó, ví dụ là dùng AlloyLaF (className là "com.incors.plaf.alloy.AlloyLookAndFeel")
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
                public static void main(String args[)
                {
                                com.incors.plaf.alloy.AlloyLookAndFeel.setProperty("alloy.licenseCode","v#ej_technologies#uwbjzx#e6pck8");
                                final JFrame f = new JFrame("My f");
                                final String[ a={"Metal","Windows","Motif","XP","Alloy"};
                                final Checkbox[ b=new Checkbox[a.length;
                                final String[ c=new String[a.length;
                                CheckboxGroup g=new CheckboxGroup();
                                c[0="javax.swing.plaf.metal.MetalLookAndFeel";
                                c[1="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
                                c[2="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
                                c[3="com.stefankrause.xplookandfeel.XPLookAndFeel";
                                c[4="com.incors.plaf.alloy.AlloyLookAndFeel";
                                Panel p=new Panel();
                                f.add(p);
                                for(int i=0;i<a.length;i++)
                                {
                                                b[i=new Checkbox(a[i,g,false);
                                                p.add(b[i);
                                                b[i.addItemListener(new ItemListener()
                                                {
                                                                public void itemStateChanged(ItemEvent e)
                                                                {
                                                                                for(int j=0;j<a.length;j++)
                                                                                {
                                                                                                if(e.getSource()==b[j)
                                                                                                {
                                                                                                                try
                                                                                                                {
                                                                                                                                UIManager.setLookAndFeel(c[j);
                                                                                                                }
                                                                                                                catch(Exception exception)
                                                                                                                {
                                                                                                                                System.out.println("LaF not found");
                                                                                                                }
                                                                                                                SwingUtilities.updateComponentTreeUI(f);
                                                                                                }
                                                                                }
                                                                }
                                                });
                                }
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                f.setVisible(true);
                }
}

Copy code

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
13:23:02, 17-07-2015

Bài 19 - LookAndFeel (cảm quan giao diện)
LookAndFeel (viết tắt là LaF gọi là cảm quan giao diện cho ứng dụng. Sử dụng rất đơn giản
UIManager.setLookAndFeel(String className) với UIManager là một class còn className là tên class chứa cái LaF đó. Java hỗ trợ sẵn 3 cái là:
javax.swing.plaf.metal.MetalLookAndFeel (giao diện Java)
com.sun.java.swing.plaf.windows.WindowsLookAndFeel (giao diện Windows)
com.sun.java.swing.plaf.motif.MotifLookAndFeel (giao diện UNIX)
Sau khi set, để giao diện hiển thị trên JFrame nào, cần cập nhật trên JFrame đó bằng phương thức sau
SwingUtilities.updateComponentTreeUI(myFrame) (myFrame là tên JFrame cần cập nhật)
Ví dụ sau sẽ minh họa cách thay đổi LaF dựa vào CheckboxGroup. Cần nói thêm là phương thức UIManager.setLookAndFeel(String className) bắt buộc phải xử lí ngoại lệ
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
                public static void main(String args[)
                {
                                final JFrame f = new JFrame("My JFrame");
                                final String[ a={"Metal","Windows","Motif"};
                                final Checkbox[ b=new Checkbox[a.length;
                                final String[ c=new String[a.length;
                                CheckboxGroup g=new CheckboxGroup();
                                c[0="javax.swing.plaf.metal.MetalLookAndFeel";
                                c[1="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
                                c[2="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
                                Panel p=new Panel();
                                f.add(p);
                                for(int i=0;i<a.length;i++)
                                {
                                                b[i=new Checkbox(a[i,g,false);
                                                p.add(b[i);
                                                b[i.addItemListener(new ItemListener()
                                                {
                                                                public void itemStateChanged(ItemEvent e)
                                                                {
                                                                                for(int j=0;j<a.length;j++)
                                                                                {
                                                                                                if(e.getSource()==b[j)
                                                                                                {
                                                                                                                try
                                                                                                                {
                                                                                                                                UIManager.setLookAndFeel(c[j);
                                                                                                                }
                                                                                                                catch(Exception exception)
                                                                                                                {
                                                                                                                                System.out.println("LaF not found");
                                                                                                                }
                                                                                                                SwingUtilities.updateComponentTreeUI(f);
                                                                                                }
                                                                                }
                                                                }
                                                });
                                }
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                f.setVisible(true);
                }
}

Copy code

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
13:19:40, 17-07-2015

Bài 17 - Khởi tạo và cài đặt phương thức hành động hàng loạt
Bạn hãy cứ tưởng tượng nếu bạn phải làm một ứng dụng giống như Microsoft Word (chỉ mới nói Word thôi chứ chưa dám đụng tới Photoshop, Corel gì cả) với một lô Menu và mỗi Menu có hơn chục cái MenuItem. Vậy thì bạn phải khởi tạo, phải add rất là mệt. Hãy để máy tự động làm cho bạn, chỉ với vài vòng lặp. Bạn cần dùng một bảng String để lưu những label của menu và một mảng Menu để lưu chính những menu.
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
                public static void main(String args[)
                {
                                JFrame f = new JFrame("My frame");
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                MenuBar menuBar=new MenuBar();
                                f.setMenuBar(menuBar);
                                final String[ menuLabel={"File","Edit","View","Insert","Format","Table","Windows","Help"};
                                final Menu[ menu=new Menu[menuLabel.length;
                                for(int i=0;i<menuLabel.length;i++)
                                {
                                                menu|i|=new Menu(menuLabel|i|);
                                                menuBar.add(menu|i|);
                                }
                                final String[ fileMenuItemLabel={"New","Open","Save","Exit"};
                                final MenuItem[ fileMenuItem=new MenuItem[fileMenuItemLabel.length;
                                for(int i=0;i<fileMenuItemLabel.length;i++)
                                {
                                                fileMenuItem|i|=new MenuItem(fileMenuItemLabel|i|);
                                                menu[0.add(fileMenuItem|i|);
                                                if(i==2) menu[0.addSeparator();
                                }
                                fileMenuItem[3.addActionListener(new ActionListener()
                                {
                                                public void actionPerformed(ActionEvent e)
                                                {
                                                                System.exit(0);
                                                }
                                });
                                f.setSize(400,60);
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                f.setVisible(true);
                }
}

Copy code

Bài 18 - ScrollPane
import javax.swing.JFrame;
import java.awt.*;
class Core
{
                public static void main(String args[)
                {
                                JFrame f = new JFrame("My frame");
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                ScrollPane s=new ScrollPane();
                                TextArea t=new TextArea();
                                s.add(t);
                                f.add(s);
                                f.setSize(200,120);
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                f.setVisible(true);
                }
}

Copy code

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
13:18:42, 17-07-2015

Bài 16 - MenuBar,Menu và MenuItem
* MenuBar và Menu

Để thấy được các Menu như File, Edit, Help như trên một cửa sổ Windows thông thường thì tất cả các đối tượng Menu ấy phải được add vào một MenuBar. Để Menubar có thể xúât hiện trong JFrame thì ta dùng phương thức setMenuBar(menuBar). Chương trình sau minh họa một ứng dụng như vậy
import javax.swing.JFrame;
import java.awt.*;
class Core
{
                public static void main(String args[)
                {
                                JFrame f = new JFrame("My frame");
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                MenuBar menuBar=new MenuBar();
                                f.setMenuBar(menuBar);
                                Menu file=new Menu("File");
                                menuBar.add(file);
                                Menu edit=new Menu("Edit");
                                menuBar.add(edit);
                                Menu help=new Menu("Help");
                                menuBar.setHelpMenu(help);
                                //phan code duoi them vao day
                                f.setSize(200,60);
                                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                f.setVisible(true);
                }
}

Copy code

* Menu và MenuItem
Còn để New, Open, Save hiện ra trong menu File thì các MenuItem ấy phải được add vào menu File. Ta thêm vào như sau
MenuItem newItem=new MenuItem("New");
file.add(newItem);
MenuItem openItem=new MenuItem("Open");
file.add(openItem);
MenuItem saveItem=new MenuItem("Save");
file.add(saveItem);
saveItem.setEnable(false);
//phan code duoi them vao day
file.addSeparator(); //phuong thuc nay dua mot hang phan cach vao menu File
MenuItem exitItem=new MenuItem("Exit");
file.add(exitItem);

Copy code

Để cho một MenuItem không thể chọn được, ta dùng phương thức setEnable(false) (mặc định là true) ví dụ như trên saveItem.setEnable(false);
Điều này đặc biệt hữu ích với ứng dụng văn bản chưa có chữ nào thì không nên cho người dùng chọn MenuItem saveItem
* Menu và submenu
Để tạo một MenuItem chứa một Menu khác (submenu), ta chỉ việc tạo Menu đó rồi add vào menu item kia là xong. Ta thêm vào như sau
Menu print=new Menu("Setup Print");
file.add(print);
MenuItem previewItem=new MenuItem("Preview");
print.add(previewItem);
MenuItem printItem=new MenuItem("Print");
print.add(printItem);
//phan code duoi them vao day

Copy code

* CheckboxMenuItem
Bạn cũng có thể tạo một mục chọn có khả năng đánh dấu bằng cách sử dụng lớp
CheckboxMenuItem
CheckboxMenuItem autosave=new CheckboxMenuItem("Auto Save");
file.add(autosave);

Copy code

Ngoài ra còn một phương thức khởi tạo khác là
CheckboxMenuItem autosave=new CheckboxMenuItem("Auto Save",true);
Copy code

Mặc định là false (chưa chọn)

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
13:17:41, 17-07-2015

Bài 14 - Nhắc lại về JFrame
Phần 1 đã nói về JFrame, bây giờ chỉ nhắc lại
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
                public static void main(String args[)
                {
                                //frame khong phu thuoc do phan giai man hinh
                                Toolkit kit = Toolkit.getDefaultToolkit();
                                Dimension screenSize = kit.getScreenSize();
                                int screenWidth = screenSize.width;
                                int screenHeight = screenSize.height;
                                int frameWidth = 200;
                                int frameHeight = 60;
                                JFrame frame = new JFrame("My frame");
                                frame.setLayout(null);
                                frame.setLocation((screenWidth-frameWidth)/2,(screenHeight-frameHeight)/2);
                                frame.setSize(frameWidth,frameHeight);
                                frame.setResizable(false);
                                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                                //tao Button Exit cai dat phuong thuc hanh dong qua class rieng
                                Button b1 = new Button("Exit");
                                b1.setBounds(0,0,100,25);
                                frame.add(b1);
                                EventQuit eventQuit=new EventQuit();
                                b1.addActionListener(eventQuit);

                                //tao Button About cai dat phuong thuc hanh dong truc tiep
                                final Button b2 = new Button("About");
                                b2.setBounds(100,0,100,25);
                                frame.add(b2);
                                b2.addActionListener(new ActionListener()
                                {
                                                public void actionPerformed(ActionEvent e)
                                                {
                                                                if(e.getSource()==b2) System.out.println("Made in Vietnam");
                                                }
                                });
                                frame.setVisible(true);
                }
}
class EventQuit implements ActionListener
{
                public void actionPerformed(ActionEvent e)
                {
                                System.exit(0);
                }
}

Copy code

Bài trên đã dùng lại các kiến thức đã học trước đây: setLayout(null) và setBounds, đặt ứng dụng giữa màn hình và không phụ thuộc phân giải màn hình nhờ dùng Toolkit, 2 cách cài đặt phương thức hành động qua class riêng và cài đặt trực tiếp.
Bài 15 - Tạo và add hàng loạt button
Bạn hãy cứ tưởng tượng nếu bạn phải add khoảng 30 button vào Frame của mình, bạn phải viết khoảng 30 câu lệnh khởi tạo, add rất là mệt. Hãy để máy tự động làm cho bạn, chỉ với vài vòng lặp. Bạn cần dùng một bảng String để lưu những label của button và một mảng Button để lưu chính những button. Đồng thời cũng dựa vào mảng Button đấy để cài đặt phương thức hành động
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core extends JFrame implements ActionListener
{
                Panel p=new Panel();
                final String[ a={"File","Edit","View","Insert","Format","Table","Windows","Help"};
                final Button[ b=new Button[a.length;
                public Core(String title)
                {
                                setTitle(title);
                                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                add(p);
                                setSize(500,60);
                                for(int i=0;i<a.length;i++)
                                {
                                                b|i|=new Button(a|i|);
                                                p.add(b|i|);
                                                b|i|.addActionListener(this);
                                }
                                setVisible(true);
                }
                public void actionPerformed(ActionEvent e)
                {
                                for(int i=0;i<a.length;i++)
                                                if(e.getSource()==b|i|) System.out.println("You have clicked button "+a|i|);
                }
                public static void main(String args[)
                {
                                Core c=new Core("My frame");
                }
}

Copy code

Sở dĩ trong bài này ta dùng khởi tạo của Core là để sử dụng addActionListener(this);

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
13:16:38, 17-07-2015

Bài 12 - Scrollbar (thanh trượt)
Scrollbar được cập nhật theo 3 tình huống unit,block và absolute
- Khi người dùng click chuột vào mũi tên ở 2 đầu Scrollbar thì unit nảy sinh, thanh trượt sẽ tự động trừ đi hay cộng thêm vị trí của con trượt 1 đơn vị (ta có thể thay đổi giá trị này, mặc định là 1)
- Khi người dùng click chuột vào khoảng giữa thanh trượt và vị trí hiện hành thì block nảy sinh, con trượt sẽ dịch chuyển một khoảng là block
- Khi người dùng nắm vào vị trí hiện tại của con trượt và lôi (drag) nó từ vị trí này sang vị trí khác, absolute nảy sinh
* Khởi tạo thanh trượt
Scrollbar() là đơn giản nhất, mặc định là thanh trượt đứng
Scrollbar(int orientation) với orientation là Scrollbar.HORIZONTAL (ngang) hay Scrollbar.VERTICAL (đứng)
Scrollbar(int orientation,int position,int block,int min,int max) là đầy đủ nhất, ví dụ Scrollbar(Scrollbar.HORIZONTAL,50,15,0,100) tức là thanh trượt ngang, phạm vi từ 0 đến 100, vị trí ban đầu của con trượt là 50 (giữa thanh) khi tình thuống block xảy ra thì con trượt di chuyển 15
* Các phương thức của thanh trượt
Để thay đổi giá trị unit (mặc định là 1) ta dùng setUnitIncrement(int unit) với unit mới
Để thay đổi giá trị block ta dùng setBlockIncrement(int block) với block mới
Để biết vị trí hiện hành của con trượt ta dùng int getValue()
* Viết bộ nghe và hành động cho thanh trượt
Để xử lí tình huống của Scrollbar khi nó thay đổi trạng thái, ta phải cho nó implements giao diện AdjustmentListener, và bên trong nó có phương thức adjustmentValueChanged(AdjustmentEvent e). Còn để Scrollbar thực hiện những hành động của lớp ấy thì ta phải dùng phương thức addAdjustmentListener.
Tuy vậy, một thanh trượt thì mỗi khi tác động đến nó, nó phải "cuộn" một cái gì đấy. Muốn AdjustmentListener đáp ứng mỗi khi ta "cuộn" thì cần AdjustmentEvent e biết được vị trí con trượt đang ở đâu, ta dùng e.getValue(). Ví dụ sau là thanh trượt và TextField
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
                public static void main(String args[)
                {
                                JFrame frame = new JFrame("My frame");
                                Panel p=new Panel();
                                frame.add(p);
                                Scrollbar s=new Scrollbar(Scrollbar.HORIZONTAL,0,10,0,100);
                                p.add(s);
                                final TextField t=new TextField(100);
                                t.setEditable(false);
                                p.add(t);
                                s.addAdjustmentListener(new AdjustmentListener()
                                {
                                                public void adjustmentValueChanged(AdjustmentEvent e)
                                                {
                                                                int currentPos=e.getValue();
                                                                String text="";
                                                                for(int i=0;i<currentPos;i++) text+='*';
                                                                t.setText(text);
                                                }
                                });                      
                                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                frame.pack();
                                frame.setVisible(true);
                }
}

Copy code

Bây giờ thì mỗi lần bạn kéo con trượt thì kí tự '*' lạy thay đổi trong TextField t.
Bài 13 - Các đối tượng khung chứa (container) và bộ quản lí trình bày (layout manager)
Khung chứa nói nôm na là những cái khung tranh bạn cần để dán những nét vẽ (đối tượng đồ họa) của bạn lên đó. Và để sắp xếp các đối tượng này trên khung chứa thì ca cần tới bộ quản lí trình bày.
- Khung chứa mà bạn đã quen thuộc là Frame. Nó giống như cửa sổ của Windows và chứa toàn bộ ứng dụng của bạn
- Một khung chứa khác mà bạn đã biết qua là Panel. Nó giống như một cái bảng hiển thi đầy đủ các thành phần GUI mà bạn muốn tống lên Frame
- Những cái còn lại sẽ học sau. Tất cả các lớp Frame,Panel,... đều là con của lớp Container
* Các phương thức của Container (các phương thức chung của các đối tượng khung chứa)
Component add(Component c) đưa một đối tượng c vào khung chứa. Ví dụ frame.add(panel);
void remove(Component c) đưa một đối tượng c ra khỏi khung chứa. Ví dụ frame.remove(panel);

Like: 0
Lên trên  Tổng số: 29
« 1 2 3 »







Trực Tuyến: Khách: 1
Diễn đàn teen Việt Nam
CopyRight 2014