Java: Cách tạo hộp thoại (Dialog)

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Một cửa sổ hộp thoại (Dialog) là một cửa sổ con độc lập với ý nghĩa mang theo thông báo tạm thời ngoài cửa sổ chính của Swing Application. Phần lớn hộp thoại được dùng để hiển thị thông báo lỗi hoặc cảnh báo tới người dùng, nhưng hộp thoại cũng có thể hiển thị ảnh, cây thư mục, hoặc bất kỳ điều gì tương thích với ứng dụng Swing đang quản lý.

Để thuận tiện thì một số lớp thành phần của Swing có thể trực tiếp khởi tạo và hiển thị hộp thoại. Để tạo các hộp thoại chuẩn một cách đơn giản thì ta sử dụng lớp JOptionPane. Lớp ProgressMonitor có thể lấy một hộp thoại để hiển thị tiến trình của một hoạt động. Hai lớp khác là JColorChooser và JFileChooser cũng cho phép hiển thị các hộp thoại chuẩn. Để tạo hộp thoại in ấn thì ta có thể sử dụng API Printing. Để tạo một hộp thoại tùy chỉnh thì ta sử dụng lớp trực tiếp là JDialog.

Câu lệnh đơn giản dưới đây sẽ tạo ra một hộp thoại trông như thế này:

An informational dialog requires minimal code

JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.");

Sau đây là các chủ đề mà bài viết này đề cập tới:

Tổng quan về hộp thoại

Mỗi hộp thoại đều phụ thuộc vào một thành phần Frame. Khi Frame bị hủy thì các hộp thoại phụ thuộc của nó cũng bị hủy. Khi frame được biểu tượng hóa thì các hộp thoại phụ thuộc của nó cũng không xuất hiện trên màn hình. Khi frame không được biểu tượng hóa thì các hộp thoại phụ thuộc của nó mới hiển thị được ra màn hình. Một lớp JDialog cũng thừa kế đặc điểm này từ lớp AWT Dialog.

Một hộp thoại có thể là modal. Khi hộp thoại modal xuất hiện thì nó sẽ khóa không cho người dùng nhập liệu ở tất cả các cửa sổ trong chương trình đó. JOptionPane tạo JDialog ở dạng modal. Để tạo một hộp thoại ở dạng non-modal thì bạn phải sử dụng lớp trực tiếp là JDialog.

Từ bản JDK 7 thì ta có thể thay đổi hành vi cửa sổ hộp thoại bằng cách sử dụng API Modality mới.

Lớp JDialog là lớp con của lớp AWT java.awt.Dialog. Nó thêm bộ chứa root pane và hỗ trợ hoạt động đóng mặc định tới đối tượng Dialog. Đây là những đặc điểm mà JFrame cũng có, và việc sử dụng JDialog trực tiếp rất tương tự với việc sử dụng JFrame. Nếu bạn muốn sử dụng JDialog trực tiếp thì bạn cần nắm được các thành phần trong bài viết Cách dùng bộ chứa mức top và Cách tạo Frame, đặc biệt là bài viết Phản hồi cho sự kiện đóng cửa sổ.

Ngay cả khi bạn sử dụng JOptionPane để thực thi một hộp thoại thì bạn vẫn cần phải sử dụng JDialog phía sau. Lý do là vì JOptionPane đơn giản là một bộ chứa có thể tự động tạo một JDialog và thêm nó vào chính phần nội dung của JDialog.

Ví dụ DialogDemo

Hình dưới đây thể hiện một ứng dụng có tên DialogDemo:

DialogDemo lets you bring up many kinds of dialogs

Các đặc điểm của JOptionPane

Nếu sử dụng JOptionPane thì ta có thể nhanh chóng tạo và tùy chỉnh được một số loại hộp thoại khác nhau. JOptionPane cung cấp các hỗ trợ cho việc bố cục các hộp thoại chuẩn, cung cấp các icon, chỉ định tiêu đề hộp thoại và văn bản, và tùy chỉnh chữ trong nút lệnh. Những đặc điểm khác cũng cho phép bạn tùy chỉnh các thành phần hiển thị hộp thoại và chỉ định nơi hiển thị hộp thoại trên màn hình chương trình. Ta cũng có thể chỉ định một option pane để đặt chính nó vào một internal frame (JInternalFrame) thay vì JDialog.

Khi ta tạo một JOptionPane, thì mã lệnh look-and-feel-specific sẽ thêm các thành phần tới JOptionPane và xác định bố cục của những thành phần này.

Icon của JOptionPane sẽ hỗ trợ ta dễ dàng chỉ định icon nào của hộp thoại được hiển thị. Ta có thể sử dụng một icon tùy chỉnh, hoặc không sử dụng icon nào, hoặc một icon bất kỳ trong bốn icon chuẩn của JOptionPane  (câu hỏi, thông tin, cảnh báo, và lỗi). Mỗi look and feel sẽ có các phiên bản riêng đối với bốn icon chuẩn này. Các hình dưới đây thể hiện các icon được sử dụng trong Java (và Windows) look and feel.

Các Icon được sử dụng bởi JOptionPane
Mô tả Java look and feel Windows look and feel
câu hỏi The Java look and feel icon for dialogs that ask questions The Windows look and feel icon for dialogs that ask questions
thông tin The Java look and feel icon for informational dialogs The Windows look and feel icon for informational dialogs
cảnh báo The Java look and feel icon for warning dialogs The Windows look and feel icon for warning dialogs
lỗi The Java look and feel icon for error dialogs The Windows look and feel icon for error dialogs

Tạo và hiển thị hộp thoại đơn giản

Đa phần các hộp thoại hiển thị đều ở dạng đơn giản, ta tạo và hiển thị hộp thoại bằng cách sử dụng các phương thức dạng showYxxDialog của JOptionPane. Nếu hộp thoại của bạn phải là một frame nội bộ thì ta thêm Internal vào sau show, ví dụ như showMessageDialog sẽ đổi thành showInternalMessageDialog. Nếu bạn cần điều khiển hộp thoại với hành vi đóng cửa sổ hoặc nếu bạn không muốn hộp thoại ở dạng modal, thif ta nên trực tiếp thể hiện hóa JOptionPane và thêm nó vào một thể hiện của JDialog, sau đó gọi phương thức setVisible(true) trên JDialog để nó xuất hiện.

Hai phương thức hữu dụng nhất dạng showYyyDialogshowMessageDialogshowOptionDialog. showMessageDialog sẽ hiển thị một hộp thoại đơn giản trong đó có một nút lệnh, còn showOptionDialog sẽ hiển thị một hộp thoại tùy chỉnh — nó có thể hiển thị các nút lệnh khác nhau và có thể chứa một thông báo chuẩn hoặc có thể là một tập hợp các thành phần.

Hai hộp thoại khác dạng showYyyDialog ít được sử dụng hơn là showConfirmDialog sẽ yêu cầu người dùng xác nhận điều gì đó, nhưng hiển thị ở dạng nút lệnh chuẩn (dạng Yes/No) mà không phải nút văn bản tùy chỉnh theo tình huống sử dụng (dạng Start/Cancel; và phưng thức thứ tư là showInputDialog, nó được thiết kế để hiển thị hộp thoại modal để lấy chuỗi dữ liệu từ người dùng trong đó có một text field, một combo box không chỉnh sửa hoặc một danh sách (list).

Dưới đây là một số ví dụ trích từ ví dụ DialogDemo, trong đó có sử dụng các phương thức showMessageDialogshowOptionDialog, và hàm tạo JOptionPane.  Bạn có thể xem nhiều ví dụ hơn tại phần Ví dụ có sử dụng Dialog.

showMessageDialog

Hiển thị hộp thoại modal có một nút lệnh có nhãn là "OK". Ta có quyền chỉ định thông báo, icon và tiều đề cho hộp thoại hiển thị. Dưới đây là một số ví dụ của loại hộp thoại showMessageDialog:

Informational dialog with default title and icon

//tiêu đề và icon mặc định
JOptionPane.showMessageDialog(frame,
    "Eggs are not supposed to be green.");

Informational dialog with custom title, warning icon

//Tùy chỉnh tiêu đề và icon cảnh báo
JOptionPane.showMessageDialog(frame,
    "Eggs are not supposed to be green.",
    "Inane warning",
    JOptionPane.WARNING_MESSAGE);

Informational dialog with custom title, error icon

//tùy chỉnh tiêu đề và icon báo lỗi
JOptionPane.showMessageDialog(frame,
    "Eggs are not supposed to be green.",
    "Inane error",
    JOptionPane.ERROR_MESSAGE);

Informational dialog with custom title, no icon

//tùy chỉnh tiêu đề và không có icon
JOptionPane.showMessageDialog(frame,
    "Eggs are not supposed to be green.",
    "A plain message",
    JOptionPane.PLAIN_MESSAGE);

Informational dialog with custom title, custom icon

//tùy chỉnh tiêu đề và icon
JOptionPane.showMessageDialog(frame,
    "Eggs are not supposed to be green.",
    "Inane custom dialog",
    JOptionPane.INFORMATION_MESSAGE,
    icon);

showOptionDialog

Hiển thị hộp thoại modal với trong đó cho phép chỉ định nút lệnh, icon, thông báo, tiêu đề, ... Phương thức này còn cho phép ta thay đổi văn bản xuất hiện trên các nút lệnh của hộp thoại chuẩn. Ta cũng có thể thực hiện được nhiều tùy chỉnh khác nữa.

Yes/No/Cancel (in different words); showOptionDialog

//tùy chỉnh văn bản cho nút lệnh
Object[] options = {"Yes, please",
                    "No, thanks",
                    "No eggs, no ham!"};
int n = JOptionPane.showOptionDialog(frame,
    "Would you like some green eggs to go "
    + "with that ham?",
    "A Silly Question",
    JOptionPane.YES_NO_CANCEL_OPTION,
    JOptionPane.QUESTION_MESSAGE,
    null,
    options,
    options[2]);

JOptionPane (hàm tạo)

Tạo một JOptionPane trong đó cho phép chỉ định nút lệnh, icon, thông báo, tiêu đề, ... Lưu ý là ta cần phải thêm option pane vào JDialog, đăng ký một bộ lắng nghe sự thay đổi thuộc tính trên option pane, và hiển thị hộp thoại. Xin xem chi tiết tại phần Không đóng hộp thoại tự động.

Explicitly used the JOptionPane constructor
final JOptionPane optionPane = new JOptionPane(
    "The only way to close this dialog is by\n"
    + "pressing one of the following buttons.\n"
    + "Do you understand?",
    JOptionPane.QUESTION_MESSAGE,
    JOptionPane.YES_NO_OPTION);

Các đối số của tất cả các hộp thoại dạng showYyyDialog và các hàm tạo của JOptionPane đều đã được tiêu chuẩn hóa mặc dù số lượng đối số của mỗi phương thức và hàm tạo là khác nhau. Dưới đây ta sẽ tìm hiểu từng đối số một. Để xem mỗi phương thức có những đối số nào ta có thêm xem tại phần API Dialog.

Component parentComponent

The JOptionPane constructors do not include this argument. Instead, you specify the parent frame when you create the JDialog that contains the JOptionPane, and you use the JDialog setLocationRelativeTo method to set the dialog position.

Đối số đầu tiên cho mỗi phương thức showYyyDialog luôn luôn là thành phần cha, trong đó bao gồm một Frame, một thành phần bên trong Frame, hoặc null. Nếu bạn chỉ định Frame hoặc một Dialog, thì Dialog sẽ xuất hiện trên trung tâm của Frame và sau đó là hành vi focus của Frame đó. Nếu bạn chỉ định một thành phần bên trong một Frame thì Dialog sẽ xuất hiện phía trên trung tâm của thành phần đó và sẽ theo sau hành vi focus của Frame của thành phần đó. Nếu bạn chỉ định null, thì look and feel sẽ chọn một vị trí thích hợp cho hộp thoại - nói chung là trung tâm của màn hình - và Dialog sẽ không nhất thiết phải theo sau hành vi focus của bất kỳ Frame hay Dialog nào.

Các hàm tạo JOptionPane không bao gồm đối số này. Thay vào đó, bạn chỉ định frame cha khi bạn tạo  JDialog chứa JOptionPane, và bạn sử dụng phương thức của JDialog là setLocationRelativeTo để thiết lập vị trí hộp thoại.

Object message

Tham số bắt buộc này chỉ ra hộp thoại sẽ hiển thị trong khu vực chính của nó. Nói chung, bạn chỉ định một chuỗi, mà kết quả trong hộp thoại hiển thị một nhãn với văn bản được chỉ định. Bạn có thể chia nhỏ các thông điệp trên nhiều dòng bằng cách đặt ký tự newline (\n) bên trong chuỗi thông báo. Ví dụ:

"Complete the sentence:\n \"Green eggs and...\""

String title

Tiêu đề của hộp thoại.

int optionType

Chỉ định tập các nút lệnh xuất hiện phía cuốc hộp thoại. Chúng được chọn từ một trong các tập sau: DEFAULT_OPTIONYES_NO_OPTIONYES_NO_CANCEL_OPTIONOK_CANCEL_OPTION.

int messageType

Tham số này xác định icon được hiển thị trong hộp thoại. Icon được chọn từ một trong các giá trị sau: PLAIN_MESSAGE (no icon), ERROR_MESSAGE,INFORMATION_MESSAGEWARNING_MESSAGEQUESTION_MESSAGE.

Icon icon

Icon hiển thị trong hôp thoại.

Object[] options

Thường được sử dụng để xác định chuỗi hiển thị bởi mỗi nút ở dưới cùng của hộp thoại. Xem phần Tùy chỉnh văn bản nút lệnh để biết thêm thông tin. Nó cũng có thể được sử dụng để xác định các biểu tượng sẽ được hiển thị bằng các nút hoặc các thành phần không phải nút được thêm vào hàng nút.

Object initialValue

Xác định giá trị mặc định được chọn.

Bạn có thể có thể để cửa sổ tùy chọn hiển thị biểu tượng mặc định của nó hoặc chỉ định các biểu tượng này bằng kiểu thông báo hoặc tham số icon. Theo mặc định, một cửa sổ tùy chọn được tạo với showMessageDialog sẽ hiển thị icon thông tin, một được tạo ra với showConfirmDialog hoặc showInputDialog sẽ hiển thị các icon dấu hỏi, và một được tạo ra với hàm tạo JOptionPane sẽ không hiển thị icon. Để xác định rằng hộp thoại hiển thị một biểu tượng chuẩn hoặc không có biểu tượng, thì ta xác định kiểu của thông báo tương ứng với các biểu tượng mà bạn mong muốn. Để xác định một biểu tượng tùy chỉnh thì ta sử dụng đối số biểu tượng. Đối số biểu tượng được ưu tiên hơn so với loại thông báo; miễn là các tham số biểu tượng có một giá trị null, hộp thoại sẽ hiển thị biểu tượng quy định.

Tùy chỉnh văn bản nút lệnh

Khi bạn sử dụng JOptionPane để tạo ra một hộp thoại, bạn có thể sử dụng văn bản nút lệnh tiêu chuẩn (mà có thể thay đổi tùy theo look and feel và miền địa phương) hoặc chỉ định văn bản khác. Theo mặc định, loại cửa sổ tùy chọn sẽ xác định có bao nhiêu nút xuất hiện. Ví dụ, hộp thoại YES_NO_OPTION có hai nút, và YES_NO_CANCEL_OPTION có ba nút.

Mã lệnh sau đây được trích từ ví dụ DialogDemo, dùng để tạo hai hộp thoại Yes/No. Hộp thoại đầu tiên được thực hiện với showConfirmDialog, trong đó sử dụng từ ngữ của look and feel cho hai nút lệnh. Hộp thoại thứ hai sử dụng showOptionDialog để nó có thể tùy chỉnh từ ngữ. Ngoại trừ những thay đổi từ ngữ, các hộp thoại là giống hệt nhau.

A yes/no dialog, in those words [but perhaps translated]

//icon mặc định, tiêu đề tùy chỉnh
int n = JOptionPane.showConfirmDialog(
    frame,
    "Would you like green eggs and ham?",
    "An Inane Question",
    JOptionPane.YES_NO_OPTION);

A yes/no dialog -- in other words

Object[] options = {"Yes, please", "No way!"};
int n = JOptionPane.showOptionDialog(frame,
    "Would you like green eggs and ham?",
    "A Silly Question",
    JOptionPane.YES_NO_OPTION,
    JOptionPane.QUESTION_MESSAGE,
    null,     //không sử dụng icon tùy chỉnh
    options,  //các tiêu để của các nút
    options[0]); //tiêu đề nút mặc định

Như đoạn mã trên đây cho thấy, các phương thức showMessageDialogshowConfirmDialog, và showOptionDialog trả về một số nguyên cho biết sự lựa chọn của người dùng. Các giá trị của số nguyên này là YES_OPTIONNO_OPTIONCANCEL_OPTIONOK_OPTION, và CLOSED_OPTION. Ngoại trừ CLOSED_OPTION, mỗi tùy chọn tương ứng với một nút mà người dùng nhấn. Khi CLOSED_OPTION được trả về, nó chỉ ra rằng người dùng đã đóng cửa sổ hộp thoại một cách tường minh, chứ không phải bằng cách chọn một nút bên trong cửa sổ tùy chọn.

Ngay cả khi bạn thay đổi các chuỗi hiển thị các nút hộp thoại tiêu chuẩn, thì giá trị trả về vẫn là một trong những nguyên được xác định trước. Ví dụ, một hộp thoại YES_NO_OPTION luôn luôn trả về một trong các giá trị sau: YES_OPTIONNO_OPTION, hoặc CLOSED_OPTION.

Lấy dữ liệu của người dùng từ hộp thoại

Hộp thoại showYyyDialog trả về một đối tượng. Đối tượng này nói chung là một chuỗi phản ánh sự lựa chọn của người dùng. Dưới đây là một ví dụ sử dụng hộp thoại showInputDialog để cho phép người dùng chọn một trong ba chuỗi:

An input dialog with a combo box

Object[] possibilities = {"ham", "spam", "yam"};
String s = (String)JOptionPane.showInputDialog(frame, "Complete the sentence:\n" + "\"Green eggs and...\"", "Customized Dialog", JOptionPane.PLAIN_MESSAGE, icon, possibilities, "ham");

//Nếu một chuỗi được trả về thì thiết lập nhãn có chứa chuỗi.
if ((s != null) && (s.length() > 0)) {
    setLabel("Green eggs and... " + s + "!");
    return;
}

//Nếu không thì
setLabel("Come on, finish the sentence!");

Nếu ta không quan tâm tới giới hạn lựa chọn của người dùng thì ta có thể sử dụng form của phương thức showInputDialog gồm một vài đối số hoặc chỉ định null cho mảng đối tượng. Trong Java look and feel thì việc thay thế null bằng possibilities sẽ cho kết quả là một hộp thoại giống như hình dưới đây:

An input dialog with a text field

Do người dùng có thể điền bất kỳ điều gì vào text field nên ta có thể muốn kiểm tra giá trị trả về và yêu cầu người dùng điền giá trị hợp lệ. Lúc này ta dùng giải pháp là tạo hộp thoại tùy chỉnh để validate dữ liệu nhập vào trước khi nó trả về. Bạn có thể xem chi tiết về điều này tại ví dụ CustomDialog.

Nếu bạn cần thiết kế API cho hộp thoại của bạn thì bạn có thể truy vấn hộp thoại về những gì mà người dùng đã chọn. Ví dụ như trong ví dụ CustomDialog có phương thức getValidatedText, phương thức này trả về văn bản do người dùng điền vào.

Không đóng hộp thoại tự động

Mặc định thì khi người dùng nhấn vào nút được tạo JOptionPane thì hộp thoại sẽ đóng. Nhưng điều gì sẽ xảy ra nếu ta muốn kiểm tra câu trả lời của người dùng trước khi đóng hộp thoại? Trong trường hợp này thì ta phải thực thi bộ lắng nghe sự thay đổi của thuộc tính để khi người dùng nhấn vào nút lệnh của hộp thoại thì hộp thoại sẽ không tự động đóng.

Ví dụ DialogDemo chứa hai hộp thoại thực thi bộ lắng nghe sự thay đổi của thuộc tính, một trong những hộp thoại này là hộp thoại modal tùy chỉnh, việc thực thi nằm bên trong ví dụ CustomDialog, nó sử dụng cả JOptionPane để lấy icon chuẩn và nhận sự hỗ trợ bố cục. Còn hộp thoại kia (đoạn mã dướ đây) dùng một chuẩn JOptionPane Yes/No. Mặc dù hộp thoại này khá vô dụng nhưng mã lệnh của nó đủ đơn giản và ta có thể sử dụng nó như một template cho nhiều hộp thoại phức tạp.

Bên cạnh việc thiết lập bộ lắng nghe sự thay đổi của thuộc tính thì đoạn mã dưới đây cũng gọ phương thức JDialog's setDefaultCloseOperation và thực thi một bộ lắng nghe cửa sổ để xử lý việc đóng cửa sổ cho phù hợp. Nếu ta không quan tâm tới thông báo khi người dùng đóng cửa sổ thì ta có thể bỏ qua những câu lệnh in đậm.

final JOptionPane optionPane = new JOptionPane(
                "The only way to close this dialog is by\n"
                + "pressing one of the following buttons.\n"
                + "Do you understand?",
                JOptionPane.QUESTION_MESSAGE,
                JOptionPane.YES_NO_OPTION);

final JDialog dialog = new JDialog(frame, "Click a button", true);
dialog.setContentPane(optionPane);
dialog.setDefaultCloseOperation(
    JDialog.DO_NOTHING_ON_CLOSE);
dialog.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent we) {
        setLabel("Thwarted user attempt to close window.");
    }
});
optionPane.addPropertyChangeListener(
    new PropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent e) {
            String prop = e.getPropertyName();

            if (dialog.isVisible() && (e.getSource() == optionPane) && (prop.equals(JOptionPane.VALUE_PROPERTY))) {
                /* Nếu bạn kiểm tra điều gì đó trước khi đóng cửa sổ, thì bạn thực hiện ở đây. */
                dialog.setVisible(false);
            }
        }
    });
dialog.pack();
dialog.setVisible(true);

int value = ((Integer)optionPane.getValue()).intValue();
if (value == JOptionPane.YES_OPTION) {
    setLabel("Good.");
} else if (value == JOptionPane.NO_OPTION) {
    setLabel("Try using the window decorations to close the non-auto-closing dialog. You can't!");
}

API Dialog

Các bảng dưới đây liệt kê các phương thức và hàm tạo phổ biến của JOptionPaneJDialog. Các phương thức khác ta có thể gọi được định nghĩa trong các lớp DialogWindowComponent như packsetSize, và setVisible.

Hiển thị các hộp thoại chuẩn (sử dụng các phương thức của lớp JOptionPane)
Phương thức Mục đích
static void showMessageDialog(Component, Object)
static void showMessageDialog(Component, Object, String, int)
static void showMessageDialog(Component, Object, String, int, Icon)

Hiển thị một nút, hộp thoại modal cung cấp cho người sử dụng một số thông tin. Các đối số chỉ định (theo thứ tự) là các thành phần cha, thông báo, tiêu đề, loại thông báo, và biểu tượng cho hộp thoại. Xem lại phần Tạo và hiển thị hộp thoại đơn giản.

static int showOptionDialog(Component, Object, String, int, int, Icon, Object[], Object)

Hiển thị một hộp thoại modal tùy chỉnh. Các đối số chỉ định (theo thứ tự) là các thành phần cha, thông báo, tiêu đề, loại lựa chọn, loại thông báo, biểu tượng, các lựa chọn, và giá trị ban đầu cho hộp thoại.

static int showConfirmDialog(Component, Object)
static int showConfirmDialog(Component, Object, String, int)
static int showConfirmDialog(Component, Object, String, int, int)
static int showConfirmDialog(Component, Object, String, int, int, Icon)

Hiển thị một hộp thoại modal yêu cầu người chọn một câu hỏi. Các đối số chỉ định (theo thứ tự) là các thành phần cha, thông báo, tiêu đề, loại lựa chọn, loại thông báo, và biểu tượng cho hộp thoại.

static String showInputDialog(Object)
static String showInputDialog(Component, Object)
static String showInputDialog(Component, Object, String, int)
static String showInputDialog(Component, Object, String, int, Icon, Object[], Object)

Hiển thị một hộp thoại modal nhắc nhở người dùng nhập dữ liệu. Phiên bản đối số duy nhất quy định cụ thể chỉ là thông báo, với thành phần cha giả định là null. Các đối số cho các phiên bản khác chỉ định (theo thứ tự) là các thành phần cha mẹ, thông báo, tiêu đề, loại thông báo, biểu tượng, lựa chọn, và giá trị ban đầu cho hộp thoại.

static void showInternalMessageDialog(...)
static void showInternalOptionDialog(...)
static void showInternalConfirmDialog(...)
static String showInternalInputDialog(...)

Thực hiện một hộp thoại tiêu chuẩn như một khung nội bộ. Xem bài viết JOptionPane để biết danh sách chính xác các đối số.

 

Những phương thức sử dụng trực tiếp JOptionPanes
Phương thức/Hàm tạo Mục đích
JOptionPane()
JOptionPane(Object)
JOptionPane(Object, int)
JOptionPane(Object, int, int)
JOptionPane(Object, int, int, Icon)
JOptionPane(Object, int, int, Icon, Object[])
JOptionPane(Object, int, int, Icon, Object[], Object)
Tạo một thể hiện của JOptionPane.
static Frame getFrameForComponent(Component)
static JDesktopPane getDesktopPaneForComponent(Component)
Vận dụng các phương thức của lớp JOptionPane để tìm frame hoặc desktop pane tương ứng mà thành phần đã chỉ định.
int getMaxCharactersPerLineCount() Xác định nơi ngắt dòng sẽ được tự động được chèn vào văn bản cửa số tùy chọn (mặc định là Integer.MAX_VALUE). Để sử dụng phương thức này thì bạn phải tạo một phân lớp JOptionPane. Ví dụ, kết quả của đoạn mã sau là một cửa sổ tùy chọn với một từ mỗi dòng, mỗi từ chứa tối đa 5 ký tự:
JOptionPane op = new JOptionPane("This is the text.") {
    public int getMaxCharactersPerLineCount() {
        return 5;
    }
};

 

Phương thức và hàm tạo phổ biến của JDialog
Phương thức/Hàm tạo Mục đích
JDialog()
JDialog(Dialog)
JDialog(Dialog, boolean)
JDialog(Dialog, String)
JDialog(Dialog, String, boolean)
JDialog(Dialog, String, boolean, GraphicsConfiguration)
JDialog(Frame)
JDialog(Frame, boolean)
JDialog(Frame, String)
JDialog(Frame, String, boolean)
JDialog(Frame, String, boolean, GraphicsConfiguration)
JDialog(Window owner)
JDialog(Window owner, Dialog.ModalityType modalityType)
JDialog(Window owner, String title)
JDialog(Window owner, String title, Dialog.ModalityType modalityType)
JDialog(Window owner, String title, Dialog.ModalityType modalityType, GraphicsConfiguration gc)

Tạo một thể hiện của JDialo. Đối số Frame nếu có, là khung (thường là một đối tượng JFrame) mà hộp thoại phụ thuộc vào. Tạo tham số boolean true xác định một hộp thoại modal, false hoặc không chỉ định một hộp thoại không modal. Bạn cũng có thể xác định tiêu đề của hộp thoại, sử dụng một tham số kiểu chuỗi.

void setContentPane(Container)
Container getContentPane()
Lấy hoặc thiết lập cửa sổ nội dung, thường là bộ chứa cho tất cả các thành phần của hộp thoại. Xem thêm thông tin tại bài viết Cách dùng bộ chứa mức top.
void setDefaultCloseOperation(int)
int getDefaultCloseOperation()
Lấy hoặc thiết lập những gì sẽ xảy ra khi người dùng đóng hộp thoại. Các giá trị có thể: DISPOSE_ON_CLOSE,DO_NOTHING_ON_CLOSEHIDE_ON_CLOSE (mặc định).
void setLocationRelativeTo(Component) Thiết lập trung tâm của hộp thoại nằm trên thành được chỉ định.
static void setDefaultLookAndFeelDecorated(boolean)
static boolean isDefaultLookAndFeelDecorated()
Thiết lập hoặc lấy gợi ý về phần trang trí cửa sổ hộp thoại (như là đường viền, hoặc các widget để đóng cửa số) nên được cung cấp bởi look and feel hiện thời, nếu không thì phần trang trí của hộp thoại sẽ được cung cấp trình quản lý cửa số hiện thời.

Ví dụ sử dụng Dialog

» Tiếp: JEditorPane
« Trước: Cách sử dụng Color Chooser
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!