Archive

Archive for the ‘Java Swing’ Category

JCheckBox trong Java Swing

Đặc điểm cơ bản của JCheckBox:

– Cho phép chọn nhiều lựa chọn cùng lúc

– Có 2 trạng thái selected/unselected

Code minh họa sử dụng JCheckBox:

( tham khảo từ http://www.javabeginner.com/java-swing/java-jcheckbox-class-example )

package quyetdv.javaswing.demo;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JCheckBoxDemo extends JPanel {

    // Four accessory choices provide for 16 different combinations
    JCheckBox jcbChin;
    JCheckBox jcbGlasses;
    JCheckBox jcbHair;
    JCheckBox jcbTeeth;

    /*
     * The image for each combination is contained in a separate image file
     * whose name indicates the accessories. The filenames are "geek-XXXX.gif"
     * where XXXX can be one of the following 16 choices.
     */

    StringBuffer choices;
    JLabel jlbPicture;
    CheckBoxListener myListener = null;

    public JCheckBoxDemo() {

        // Add an item listener for each of the check boxes.
        // This is the listener class which contains business logic
        myListener = new CheckBoxListener();

        // Create check boxes with default selection true

        jcbChin = new JCheckBox("Chin");
        jcbChin.setMnemonic(KeyEvent.VK_C);

        // Alt+C Checks/Unchecks the check Box
        jcbChin.setSelected(true);
        jcbChin.addItemListener(myListener);

        jcbGlasses = new JCheckBox("Glasses");
        jcbGlasses.setMnemonic(KeyEvent.VK_G);

        // Alt+G Checks/Unchecks the check Box
        jcbGlasses.setSelected(true);
        jcbGlasses.addItemListener(myListener);

        jcbHair = new JCheckBox("Hair");
        jcbHair.setMnemonic(KeyEvent.VK_H);

        // Alt+H Checks/Unchecks the check Box
        jcbHair.setSelected(true);
        jcbHair.addItemListener(myListener);

        jcbTeeth = new JCheckBox("Teeth");
        jcbTeeth.setMnemonic(KeyEvent.VK_T);

        // Alt+T Checks/Unchecks the check Box
        jcbTeeth.setSelected(true);
        jcbTeeth.addItemListener(myListener);

        // Indicates what's on the geek.
        choices = new StringBuffer("cght");// Default Image has all the parts.

        // Set up the picture label
        jlbPicture = new JLabel(new ImageIcon("geek-"
                + choices.toString().trim() + ".gif"));
        jlbPicture.setToolTipText(choices.toString().trim());

        // Put the check boxes in a column in a panel
        JPanel jplCheckBox = new JPanel();
        jplCheckBox.setLayout(new GridLayout(0, 1)); // 0 rows, 1 Column
        jplCheckBox.add(jcbChin);
        jplCheckBox.add(jcbGlasses);
        jplCheckBox.add(jcbHair);
        jplCheckBox.add(jcbTeeth);

        setLayout(new BorderLayout());
        add(jplCheckBox, BorderLayout.WEST);
        add(jlbPicture, BorderLayout.CENTER);
        setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
    }

    // Listens to the check boxes events
    class CheckBoxListener implements ItemListener {
        public void itemStateChanged(ItemEvent e) {
            int index = 0;
            char c = '-';
            Object source = e.getSource();
            if (source == jcbChin) {
                index = 0;
                c = 'c';
            } else if (source == jcbGlasses) {
                index = 1;
                c = 'g';
            } else if (source == jcbHair) {
                index = 2;
                c = 'h';
            } else if (source == jcbTeeth) {
                index = 3;
                c = 't';
            }

            if (e.getStateChange() == ItemEvent.DESELECTED)
                c = '-';

            choices.setCharAt(index, c);
            jlbPicture.setIcon(new ImageIcon("geek-"
                    + choices.toString().trim() + ".gif"));
            jlbPicture.setToolTipText(choices.toString());
        }
    }

    public static void main(String s[]) {
        JFrame frame = new JFrame("JCheckBox Usage Demo");
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        frame.setContentPane(new JCheckBoxDemo());
        frame.pack();
        frame.setVisible(true);
    }

}

Kết quả :

JCheckBoxDemo

Link download source : http://www.javabeginner.com/jcheckbox.zip

Advertisements
Categories: Java Swing

JRadioButton trong Java Swing

Đặc điểm cơ bản của JRadioButton :

– Chỉ cho phép chọn 1  từ 1 nhóm các lựa chọn

Code minh họa sử dụng JRadioButton:

Ví dụ sau minh họa việc hiển thị hình ảnh tương ứng với lựa chọn từ RadioButton ( Lưu ý : Bạn cần có các ảnh hanoi.jpg,hue.jpg,saigon.jpg đặt trong thư mục code )

package quyetdv.javaswing.demo;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JRadioButtonDemo extends JPanel {

    static JFrame frame;
    JLabel jlbPicture;
    RadioListener myListener = null;

    public JRadioButtonDemo() {
        // Create the radio buttons and assign Keyboard shortcuts using
        // Mnemonics
        JRadioButton jrbNumbers = new JRadioButton("HaNoi");
        jrbNumbers.setMnemonic(KeyEvent.VK_N);
        jrbNumbers.setActionCommand("HaNoi");
        jrbNumbers.setSelected(true);
        JRadioButton jrbAlphabets = new JRadioButton("Hue");
        jrbAlphabets.setMnemonic(KeyEvent.VK_H);
        jrbAlphabets.setActionCommand("Hue");
        JRadioButton jrbSymbols = new JRadioButton("SaiGon");
        jrbSymbols.setMnemonic(KeyEvent.VK_S);
        jrbSymbols.setActionCommand("SaiGon");
        // Group the radio buttons.
        ButtonGroup group = new ButtonGroup();
        group.add(jrbNumbers);
        group.add(jrbAlphabets);
        group.add(jrbSymbols);
        // Register an action listener for the radio buttons.
        myListener = new RadioListener();
        jrbNumbers.addActionListener(myListener);
        jrbAlphabets.addActionListener(myListener);
        jrbSymbols.addActionListener(myListener);
        // Set up the picture label
        jlbPicture = new JLabel(new ImageIcon("" + "hanoi" + ".jpg"));
        // Set the Default Image
        jlbPicture.setPreferredSize(new Dimension(177, 122));
        // Put the radio buttons in a column in a panel
        JPanel jplRadio = new JPanel();
        jplRadio.setLayout(new GridLayout(0, 1));
        jplRadio.add(jrbNumbers);
        jplRadio.add(jrbAlphabets);
        jplRadio.add(jrbSymbols);
        setLayout(new BorderLayout());
        add(jplRadio, BorderLayout.WEST);
        add(jlbPicture, BorderLayout.CENTER);
        setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
    }

    /** Listens to the radio buttons. */
    class RadioListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            jlbPicture
                    .setIcon(new ImageIcon("" + e.getActionCommand() + ".jpg"));
        }
    }

    public static void main(String s[]) {
        frame = new JFrame("JRadioButton Usage Demo");
        frame.addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        frame.getContentPane().add(new JRadioButtonDemo(), BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
}

Kết quả :

JRadioButtonDemo_HaNoi

Link download source : https://www.dropbox.com/s/uvlack8alvsxhht/DemoJavaSwing_JRadioButton.7z

Categories: Java Swing

JCombobox trong Java Swing

Đặc điểm cơ bản của JCombobox:

– JCombobox giống như một drop down box – bạn có thể click vào mũi tên drop down và chọn một lựa chọn từ một danh sách. Nó sinh ra ItemEvent.

– Thanh cuộn dọc thường được dùng cho một danh sách dài.

Code minh họa sử dụng JCombobox:

Ví dụ 1 : Khi click chọn 1 item từ Combobox sẽ thay đổi ảnh tương ứng ( Lưu ý : Bạn cần có các ảnh hanoi.jpg,hue.jpg,saigon.jpg đặt trong thư mục code )

package quyetdv.javaswing.demo;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JComboBoxDemo extends JPanel {

    JLabel jlbPicture;

    public JComboBoxDemo() {
        String[] comboCities = { "HaNoi", "Hue", "SaiGon" };
        // Create the combo box, and set first item as Default
        JComboBox comboTypesList = new JComboBox(comboCities);
        comboTypesList.setSelectedIndex(0);
        comboTypesList.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JComboBox jcmbType = (JComboBox) e.getSource();
                String cmbType = (String) jcmbType.getSelectedItem();
                jlbPicture.setIcon(new ImageIcon(""
                        + cmbType.trim().toLowerCase() + ".jpg"));
            }
        });
        // Set up the picture
        jlbPicture = new JLabel(new ImageIcon(""
                + comboCities[comboTypesList.getSelectedIndex()] + ".jpg"));
        jlbPicture.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
        jlbPicture.setPreferredSize(new Dimension(200, 130 + 10));
        // Layout the demo
        setLayout(new BorderLayout());
        add(comboTypesList, BorderLayout.NORTH);
        add(jlbPicture, BorderLayout.SOUTH);
        setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
    }

    public static void main(String s[]) {
        JFrame frame = new JFrame("JComboBox Usage Demo");
        frame.addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        frame.setContentPane(new JComboBoxDemo());
        frame.pack();
        frame.setVisible(true);
    }
}

Kết quả :

JComboboxDemo_HaNoi

Khi chọn item Hue :

JComboboxDemo_Hue

Link download source  : https://www.dropbox.com/s/0gcvy22ezqkl1o8/DemoJavaSwing_JCombobox1.7z

Ví dụ 2 : Lựa chọn định dạng hiển thị ngày tháng từ Combobox

package quyetdv.javaswing.demo;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;
import java.text.*;

public class DateComboBoxDemo extends JPanel {

    static JFrame frame;
    JLabel jlbResult;
    String datePattern_Current;
    public DateComboBoxDemo() {
        String[] datePatterns = { "dd MMMMM yyyy", "dd.MM.yy", "MM/dd/yy",
                "yyyy.MM.dd G 'at' hh:mm:ss z", "EEE, MMM d, ''yy",
                "h:mm a", "H:mm:ss:SSS", "K:mm a,z",
                "yyyy.MMMMM.dd GGG hh:mm aaa" };
        datePattern_Current = datePatterns[0];
        // Set up the UI for selecting a pattern.
        JLabel jlbHeading = new JLabel(
                "Enter Date pattern /Select from list:");
        JComboBox patternList = new JComboBox(datePatterns);
        patternList.setEditable(true);
        patternList.setAlignmentX(Component.LEFT_ALIGNMENT);
        patternList.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JComboBox jcmbDates = (JComboBox) e.getSource();
                String seletedDate = (String) jcmbDates.getSelectedItem();
                datePattern_Current = seletedDate;
                showDateinLabel();
            }
        });
        // Create the UI for displaying result
        JLabel jlbResultHeading = new JLabel("Current Date/Time",
                JLabel.LEFT);
        jlbResult = new JLabel(" ");
        jlbResult.setForeground(Color.black);
        jlbResult.setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createLineBorder(Color.black), BorderFactory
                        .createEmptyBorder(5, 5, 5, 5)));
        // Lay out everything
        JPanel jpnDate = new JPanel();
        jpnDate.setLayout(new BoxLayout(jpnDate, BoxLayout.Y_AXIS));
        jpnDate.add(jlbHeading);
        jpnDate.add(patternList);
        JPanel jpnResults = new JPanel();
        jpnResults.setLayout(new GridLayout(0, 1));
        jpnResults.add(jlbResultHeading);
        jpnResults.add(jlbResult);
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        jpnDate.setAlignmentX(Component.LEFT_ALIGNMENT);
        jpnResults.setAlignmentX(Component.LEFT_ALIGNMENT);
        add(jpnDate);
        add(Box.createRigidArea(new Dimension(0, 10)));
        add(jpnResults);
        setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        showDateinLabel();
    } // constructor
    /** Formats and displays today's date. */
    public void showDateinLabel() {
        Date today = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat(
                datePattern_Current);
        try {
            String dateString = formatter.format(today);
            jlbResult.setForeground(Color.black);
            jlbResult.setText(dateString);
        } catch (IllegalArgumentException e) {
            jlbResult.setForeground(Color.red);
            jlbResult.setText("Error: " + e.getMessage());
        }
    }
    public static void main(String s[]) {
        frame = new JFrame("JComboBox Usage Demo");
        frame.addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        frame.setContentPane(new DateComboBoxDemo());
        frame.pack();
        frame.setVisible(true);
    }
}

Kết quả :

JComboboxDemo_Date1

Link download source : http://www.javabeginner.com/jcombobox-2.zip

Categories: Java Swing

JTextArea trong Java Swing

Đặc điểm cơ bản của JTextArea:

– Cho phép hiển thị/ chỉnh sửa nhiều dòng text
– Có thể được sử dụng kết hợp với lớp JScrollPane để thực hiện việc cuộn ngang, dọc

Các phương thức cơ bản của JTextArea:

– getText() : Lấy nội dung của JTextArea

– setText(String text) : Đặt nội dung cho JTextArea

– append(String str) : Thêm chuỗi vào cuối nội dung của JTextArea

– setColumns(int columns) : Đặt số cột cho JTextArea

– setRows(int rows) : Đặt số dòng cho JTextArea

– setLineWrap(boolean wrap) : Đặt/Hủy line wrap

– setWrapStyleWord(boolean word): Đặt/ Hủy word wrap

– setDragEnabled(boolean b) : Enable / Disable thao tác kéo nội dung

– setCaretPosition(int position) : Đặt vị trí con trỏ nháy

– setCaretColor(Color c) : Đặt màu cho con trỏ nháy

Code minh họa sử dụng JTextArea:

Ví dụ : Đoạn code sau thực hiện chức năng thêm nội dung gõ từ JTextField vào cuối JTextArea

package quyetdv.javaswing.demo;

import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class JTextAreaDemo extends JFrame {

    JTextField jtfInput;
    JTextArea jtAreaOutput;
    String newline = "\n";

    public JTextAreaDemo() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    private void initComponents() {
        jtfInput = new JTextField(20);
        jtfInput.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                String text = jtfInput.getText();
                jtAreaOutput.append(text + newline);
                jtfInput.selectAll();
            }
        });

        jtAreaOutput = new JTextArea(5, 20);
        jtAreaOutput.setCaretPosition(0);
        jtAreaOutput.setEditable(false);

        JScrollPane scrollPane = new JScrollPane(jtAreaOutput,
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

        GridBagLayout gridBag = new GridBagLayout();
        Container contentPane = getContentPane();
        contentPane.setLayout(gridBag);

        GridBagConstraints gridCons1 = new GridBagConstraints();
        gridCons1.gridwidth = GridBagConstraints.REMAINDER;
        gridCons1.fill = GridBagConstraints.HORIZONTAL;
        contentPane.add(jtfInput, gridCons1);

        GridBagConstraints gridCons2 = new GridBagConstraints();
        gridCons2.weightx = 1.0;
        gridCons2.weighty = 1.0;
        contentPane.add(scrollPane, gridCons2);
    }

    public static void main(String args[]) {
        JTextAreaDemo jTextAreaDemo = new JTextAreaDemo();
        jTextAreaDemo.pack();
        jTextAreaDemo.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        jTextAreaDemo.setVisible(true);
    }

}

Kết quả :

JTextAreaDemo

Các hàm tạo của JTextArea :

– JTextArea() : Tạo một TextArea mới

– JTextArea(Document doc) : Tạo một JTextArea mới với một document model và mặc định cho tất cả các tham số khác ( null, 0, 0 )

– JTextArea(Document doc, String text, int rows, int columns ) : Tạo một JTextArea mới với một document model và chỉ định số dòng, số cột , text ban đầu

– JTextArea(int rows, int columns) : Tạo một JTextArea mới chỉ định số dòng, số cột

– JTextArea(String text) : Tạo một JTextArea mới chỉ định text hiển thị

– JTextArea(String text, int rows, int columns): Tạo một JTextArea mới chỉ định text hiển thị, số dòng, số cột

Categories: Java Swing

JTextField trong Java Swing

Đặc điểm cơ bản của JTextField:

– Cho phép chỉnh sửa/hiển thị một dòng text đơn, có thể được căn lề trái, phải hoặc chính giữa hay đặt font cho text

– Cung cấp nhiều event listener

Code minh họa sử dụng JTextField:

package quyetdv.javaswing.components;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class JTextFieldDemo extends JFrame implements ActionListener {
 
    private JTextField textField;
    private JButton button;
 
    public JTextFieldDemo() {
        // Create JFrame
        setSize(250, 100);
        setVisible(true);
        setLocation(500, 300);
        setResizable(false);
        setTitle("JTextField Demo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        textField = new JTextField();
        add(textField,"North",0);
 
        button = new JButton("Click me");
        add(button,"South",1);
        button.addActionListener(this);
    }
    public static void main(String[] args) {
       JTextFieldDemo textFieldDemo = new JTextFieldDemo();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        textField.setText("Hello");
    }
}
Categories: Java Swing

Confirm Dialog trong Java Swing

Đặc điểm cơ bản của Confirm Dialog :

– Hiển thị hộp thoại xác nhận

Code minh họa sử dụng Confirm Dialog :

package quyetdv.javaswing.components;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class ConfirmDialogDemo extends JFrame {
    public ConfirmDialogDemo() {
        setSize(250, 100);
        setVisible(true);
        setLocation(500, 300);
        setResizable(false);
        setTitle("JButton Demo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Create label
        JLabel label = new JLabel("A JLabel");
        add(label);
        // Create button
        JButton button = new JButton("Click me");
        add(button, "North", 1);
        // add ActionListener
        button.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent arg0) {
                 int click = JOptionPane.showConfirmDialog(null, "This is a confirm dialog");
                 if (click==JOptionPane.YES_OPTION) {
                      JOptionPane.showMessageDialog(null, "Click Yes");
                 }
                 if (click==JOptionPane.NO_OPTION) {
                      JOptionPane.showMessageDialog(null, "Click No");
                 }
                 if (click==JOptionPane.CANCEL_OPTION) {
                      JOptionPane.showMessageDialog(null, "Click Cancel");
                 }
                 if (click==JOptionPane.CLOSED_OPTION) {
                      JOptionPane.showMessageDialog(null, "Click Close");
                 }
             }
        });
    }
    public static void main(String[] args) {
        ConfirmDialogDemo confirmDialog = new ConfirmDialogDemo();
    }
}

Kết quả : Khi click vào nút Button sẽ hiển thị hộp thoại Confirm như hình sau

ConfirmDialogDemo

Categories: Java Swing

Message Dialog trong Java Swing

Đặc điểm cơ bản của Message Dialog :

– Hiển thị thông điệp dạng dialog

Code minh họa sử dụng Message Dialog :

package quyetdv.javaswing.components;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class MessageDialogDemo extends JFrame {
    public MessageDialogDemo() {
        setSize(250, 100);
        setVisible(true);
        setLocation(500, 300);
        setResizable(false);
        setTitle("JButton Demo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Create label
        JLabel label = new JLabel("A JLabel");
        add(label);
        // Create button
        JButton button = new JButton("Click me");
        add(button, "North", 1);
        // add ActionListener
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                JOptionPane.showMessageDialog(null, "This is a messag dialog",
                  "Title", JOptionPane.WARNING_MESSAGE);
            }
       });
    }
    public static void main(String[] args) {
        MessageDialogDemo messageDialog = new MessageDialogDemo();
    }
}

Kết quả : Khi click vào nút Button sẽ hiển thị hộp thoại thông báo sau

MessageDialogDemo

Categories: Java Swing