Đăng ký nhận thông tin về những video mới nhất
Để tạo nút lệnh (Button) thì ta có thể sử dụng một trong những lớp con của lớp AbstractButton
. Bảng sau đây liệt kê các lớp con của lớp AbstractButton
mà ta có thể sử dụng:
Lớp | Tổng quan |
---|---|
JButton |
Nút lệnh thông thường. |
JCheckBox |
Nút check box. |
JRadioButton |
Nhóm nút radio. |
JMenuItem |
Tạo item cho menu. |
JCheckBoxMenuItem |
Mỗi menu item chứa một check box. |
JRadioButtonMenuItem |
Mỗi menu item chứa một radio button. |
JToggleButton |
Thực hiện chức năng chuyển đổi (toggle) thừa kế từ JCheckBox và JRadioButton . Có thể tạo thể hiện hoặc lớp con để tạo nút lệnh hai trạng thái.. |
Lưu ý: Nếu ta muốn tập hợp một nhóm các nút lệnh vào một hàng hay một cột thì ta nên xem phần kiến thức về tool bar.
Bạn đang đọc: Java: Cách sử dụng Button, Check Box và Radio
Tóm Tắt
Cách sử dụng API Button phổ biến
Hình dưới đây bộc lộ một ứng dụng gồm 3 nút lệnh :
Như bạn thấy ở ảnh, nút lệnh của Swing có thể hiển thị cả văn bản lẫn ảnh. Trong ví dụ ButtonDemo
thì mỗi nút lệnh sẽ có phần văn bản ở vị trí riêng liên quan đến ảnh tương ứng của nút lệnh đó. Ký tự gạch dưới trong phần text của mỗi nút lệnh thể hiện ký tự gợi ý cho nút lệnh đó. Theo đó, thì người dùng có thể click một nút lệnh bằng cách nhấn tổ hợp phím Alt + ký tự gợi ý, chẳng hạn như Alt + M sẽ click nút lệnh Middle trong ví dụ ButtonDemo.
Khi vô hiệu một nút lệnh thì look and feel sẽ tự động hóa tạo và hiển thị nút lệnh bị vô hiệu đó. Tuy nhiên, ta hoàn toàn có thể phân phối một ảnh để thay thế sửa chữa cho ảnh thường thì mà look and feel cung ứng. Chẳng hạn như ta hoàn toàn có thể cung ứng những ảnh màu xám được sử dụng tại những nút bên trái và bên phải .
Cách bạn thực thi việc xử lý sự kiện thế nào sẽ phụ thuộc vào vào kiểu của nút lệnh mà bạn dùng cũng như cách sử dụng nó. Nói chung bạn cần thực thi một action listener, việc này sẽ được thông tin mỗi khi người dùng click vào nút lệnh. Đối với check box thì ta thường sử dụng item listener, nó cũng sẽ được thông tin khi check box được chọn hoặc không được chọn .
Dưới đây là một phần đoạn mã của ví dụ ButtonDemo
dùng để tạo các nút lệnh như ở hình trên cũng như sẽ có hiệu ứng phản ứng lại mỗi khi người dùng click chuột vào nút lệnh. Những câu lệnh được làm đậm là những câu lệnh sẽ được sử dụng nếu nút lệnh không có ảnh.
//Đoạn mã khởi tạo:
ImageIcon leftButtonIcon = createImageIcon(“public/images/article/right.gif”);
ImageIcon middleButtonIcon = createImageIcon(“public/images/article/middle.gif”);
ImageIcon rightButtonIcon = createImageIcon(“public/images/article/left.gif”);
b1 = new JButton(“Disable middle button”, leftButtonIcon);
b1.setVerticalTextPosition(AbstractButton.CENTER);
b1.setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
b1.setMnemonic(KeyEvent.VK_D);
b1.setActionCommand(“disable”);
b2 = new JButton(“Middle button”, middleButtonIcon);
b2.setVerticalTextPosition(AbstractButton.BOTTOM);
b2.setHorizontalTextPosition(AbstractButton.CENTER);
b2.setMnemonic(KeyEvent.VK_M);
b3 = new JButton(“Enable middle button”, rightButtonIcon);
//Sử dụng vị trí văn bản mặc định CENTER, TRAILING (RIGHT).
b3.setMnemonic(KeyEvent.VK_E);
b3.setActionCommand(“enable”);
b3.setEnabled(false);
//Lắng nghe hàng động trên các nút b1 và b3.
b1.addActionListener(this);
b3.addActionListener(this);
b1.setToolTipText(“Click this button to disable “
+ “the middle button.”);
b2.setToolTipText(“This middle button does nothing “
+ “when you click it.”);
b3.setToolTipText(“Click this button to enable the “
+ “middle button.”);
…
}
public void actionPerformed(ActionEvent e) {
if (“disable”.equals(e.getActionCommand())) {
b2.setEnabled(false);
b1.setEnabled(false);
b3.setEnabled(true);
} else {
b2.setEnabled(true);
b1.setEnabled(true);
b3.setEnabled(false);
}
}
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = ButtonDemo.class.getResource(path);
…//bỏ qua việc xử lý lỗi…
return new ImageIcon(imgURL);
}
Cách sử dụng các tính năng của JButton
JButton
chỉ hơn lớp AbstractButton
đúng một tính năng là ta có thể làm cho JButton
trở thành nút lệnh mặc định.
Thông thường thì một bộ chứa mức top có thể là nút lệnh mặc định. Nút lệnh mặc định thông thường có sự xuất hiện nổi bật và nó sẽ được click mỗi khi bộ chứa mức top được focus từ bàn phím và người dùng nhấn nút Return hoặc Enter. Dưới đây là hình ảnh của một hộp thoại được thực thi trong ví dụ ListDialog, trong đó nút lệnh Set là nút lệnh mặc định (được focus ngay từ đầu):
Ta thiết lập một nút lệnh là mặc định bằng cách gọi phương thức setDefaultButton
trên root pane của bộ chứa mức top. Dưới đây là đoạn mã thiết lập nút lệnh mặc định cho ví dụ ListDialog
:
//Trong hàm tạo của lớp con JDialog:
getRootPane().setDefaultButton(setButton);
Việc tạo nút lệnh mặc định chuẩn xác hay không nhờ vào vào look and feel. Ví dụ như trong Window look and feel, thì nút lệnh mặc định biến hóa để mỗi khi nó được focus thì khi ta nhấn phím Enter nó sẽ phải được click. Khi không có nút lệnh nào được thiết lập focus thì nút lệnh gốc sẽ trở thành nút lệnh mặc định được focus .
Cách sử dụng Check Box
Lớp JCheckBox
cung cấp các hỗ trợ cho các nút lệnh check box. Ta cũng có thể đặt nút check box trong menu bằng cách sử dụng lớp JCheckBoxMenuItem
. Do JCheckBox
và JCheckBoxMenuItem
thừa kế từ AbstractButton
, nên các check box có tất cả những đặc điểm của một nút lệnh thông thường. Ví dụ như trong check box ta có thể chỉ định được ảnh.
Check box tương tự như như radio buttons nhưng có sự khác nhau về Mã Sản Phẩm lựa chọn. Cụ thể là với nhóm check box thì ta hoàn toàn có thể không chọn hoặc chọn toàn bộ, còn với nhóm radio thì ta chỉ hoàn toàn có thể chọn một .
Dưới đây là ảnh chụp của một ứng dụng dùng bốn check box để tùy chỉnh một một nhân vật hoạt hình :
Mỗi check box sẽ tạo một sự kiện trên mục và một sự kiện hành động cho mỗi cú click. Thường thì bạn chỉ cần lắng nghe các sự kiện trên mục vì giúp bạn xác định check box có được chọn hay không. Đoạn mã dưới đây được trích từ ví dụ CheckBoxDemo dùng để tạo các check box như thể hiện ở hình trên và phản ứng với việc nhấp chuột.
//In initialization code:
chinButton = new JCheckBox(“Chin”);
chinButton.setMnemonic(KeyEvent.VK_C);
chinButton.setSelected(true);
glassesButton = new JCheckBox(“Glasses”);
glassesButton.setMnemonic(KeyEvent.VK_G);
glassesButton.setSelected(true);
hairButton = new JCheckBox(“Hair”);
hairButton.setMnemonic(KeyEvent.VK_H);
hairButton.setSelected(true);
teethButton = new JCheckBox(“Teeth”);
teethButton.setMnemonic(KeyEvent.VK_T);
teethButton.setSelected(true);
//Register a listener for the check boxes.
chinButton.addItemListener(this);
glassesButton.addItemListener(this);
hairButton.addItemListener(this);
teethButton.addItemListener(this);
…
public void itemStateChanged(ItemEvent e) {
…
Object source = e.getItemSelectable();
if (source == chinButton) {
//…make a note of it…
} else if (source == glassesButton) {
//…make a note of it…
} else if (source == hairButton) {
//…make a note of it…
} else if (source == teethButton) {
//…make a note of it…
}
if (e.getStateChange() == ItemEvent.DESELECTED)
//…make a note of it…
…
updatePicture();
}
Cách sử dụng Radio Button
Radio button là một nhóm các nút lệnh, trong đó theo quy ước thì chỉ một nút lệnh được chọn ở một thời điểm. Swing hỗ trợ nút radio với các lớp JRadioButton
và ButtonGroup
. Để đặt nút radio vào menu thì ta sử dụng lớp JRadioButtonMenuItem
.
Do JRadioButton
thừa kế từ lớp AbstractButton
nên nó cũng có tất cả những đặc điểm của một nút lệnh thông thường. Ví dụ như ta có thể chỉ định ảnh được hiển thị trong radio button.
Hình dưới đây biểu lộ một ứng dụng gồm 5 nút radio được cho phép ta chọn loại vật nuôi mong ước, ảnh tương ứng sẽ hiển thị bên cạnh :
Khi người dùng click một radio nào đó ( kể cả là nó đã được chọn ) thì nút lệnh sẽ kích hoạt một action sự kiện, khi đó một hoặc hai item events cũng được kích hoạt. Thường thì ta sẽ giải quyết và xử lý nút radio bằng cách sử dụng một action listener .
Đoạn mã dưới đây trích từ ví dụ RadioButtonDemo.java
dùng để tạo nút radio như trong hình trên và phản ứng khi được click:
//Đoạn mã khởi tạo:
//Tạo các nút radio.
JRadioButton birdButton = new JRadioButton(birdString);
birdButton.setMnemonic(KeyEvent.VK_B);
birdButton.setActionCommand(birdString);
birdButton.setSelected(true);
JRadioButton catButton = new JRadioButton(catString);
catButton.setMnemonic(KeyEvent.VK_C);
catButton.setActionCommand(catString);
JRadioButton dogButton = new JRadioButton(dogString);
dogButton.setMnemonic(KeyEvent.VK_D);
dogButton.setActionCommand(dogString);
JRadioButton rabbitButton = new JRadioButton(rabbitString);
rabbitButton.setMnemonic(KeyEvent.VK_R);
rabbitButton.setActionCommand(rabbitString);
JRadioButton pigButton = new JRadioButton(pigString);
pigButton.setMnemonic(KeyEvent.VK_P);
pigButton.setActionCommand(pigString);
//Nhóm các nút radio.
ButtonGroup group = new ButtonGroup();
group.add(birdButton);
group.add(catButton);
group.add(dogButton);
group.add(rabbitButton);
group.add(pigButton);
//Đăng ký một bộ lắng nghe cho các nút radio.
birdButton.addActionListener(this);
catButton.addActionListener(this);
dogButton.addActionListener(this);
rabbitButton.addActionListener(this);
pigButton.addActionListener(this);
…
public void actionPerformed(ActionEvent e) {
picture.setIcon(new ImageIcon(“public/images/article/”
+ e.getActionCommand()
+ “.gif”));
}
Với mỗi nhóm nút radio thì ta cần phải tạo một thể hiện ButtonGroup
và thêm từng nút radio vào nó. ButtonGroup
sẽ quan tâm đến việc không chọn những nút đã được chọn trước đó khi người dùng chọn nút radio khác trong nhóm.
Nói chung ta nên khởi tạo một nhóm radio. Tuy nhiên thì API lại không thực thi quy tắc này ( một nhóm radio hoàn toàn có thể không được khởi tạo ) .
API Button
Bảng sau đây liệt kê các API button thường hay sử dụng. Những phương thức khác bạn có thể gọi như setFont
và setForeground
chẳng hạn được liệt kê trong lớp JComponent.
Phương thức/hàm tạo | Mục đích |
---|---|
JButton(Action) JButton(String, Icon) JButton(String) JButton(Icon) JButton() |
Tạo một thể hiện của JButton , khởi tạo nó để có text/ảnh/hành động được chỉ định. |
void setAction(Action) Action getAction() |
Thiết lập hoặc lấy các thuộc tính của nút lệnh theo giá trị từ thể hiện của lớp Action . |
void setText(String) String getText() |
Thiết lập hoặc lấy văn bản của nút lệnh. Ta có thể sử dụng định dạng HTML như mô tả trong bài viết Cách sử dụng HTML trong Swing Component. |
void setIcon(Icon) Icon getIcon() |
Thiết lập hoặc lấy ảnh của nút lệnh khi nó không được chọn hay nhấn. |
void setDisabledIcon(Icon) Icon getDisabledIcon() |
Thiết lâp hoặc lấy ảnh của nút lệnh khi nó bị vô hiệu. Nếu ta không chỉ định một ảnh disabled thì look and feel sẽ tạo một ảnh bằng cách lấy ảnh mặc định. |
void setPressedIcon(Icon) Icon getPressedIcon() |
Thiết lập hoặc lấy ảnh của nút lệnh khi nó được nhấn. |
void setSelectedIcon(Icon) Icon getSelectedIcon() void setDisabledSelectedIcon(Icon) Icon getDisabledSelectedIcon() |
Thiết lập hoặc lấy ảnh của nút lệnh khi nó được chọn. Nếu ta không chỉ định một ảnh selected thì look and feel sẽ tạo một ảnh bằng cách thao tác với ảnh đã chọn. |
setRolloverEnabled(boolean) boolean isRolloverEnabled() void setRolloverIcon(Icon) Icon getRolloverIcon() void setRolloverSelectedIcon(Icon) Icon getRolloverSelectedIcon() |
Dùng setRolloverIcon(someIcon) để tạo nút lệnh hiển thị icon được chỉ định khi con trỏ chuột chạm vào nó. Phương thức setRolloverSelectedIcon sẽ giúp ta chỉ định icon rollover khi nút được chọn – điều này hữu dụng đối với nút có hai trạng thái như nút toggle chẳng hạn. Để thiết lập icon rollover một cách tự động thì ta gọi phương thức setRollover(true) . |
Phương thức/Hàm tạo | Mục đích |
---|---|
void setHorizontalAlignment(int) void setVerticalAlignment(int) int getHorizontalAlignment() int getVerticalAlignment() |
Thiết lập hoặc lấy vị trí trong nút lệnh mà nội dung của nó nên được đặt. Lớp AbstractButton cho phép bất kỳ giá trị nào sau đây để canh ngang: RIGHT , LEFT , CENTER (mặc định), LEADING , và TRAILING . Còn đây là các giá trị canh dọc: TOP , CENTER (mặc định) và BOTTOM . |
void setHorizontalTextPosition(int) void setVerticalTextPosition(int) int getHorizontalTextPosition() int getVerticalTextPosition() |
Thiết lập hoặc lấy vị trí mà văn bản của nút lệnh cần được đặt và vị trí tương đối với ảnh của nút lệnh. Lớp AbstractButton cho phép bất kỳ giá trị nào sau đây để canh ngang: LEFT , CENTER , RIGHT , LEADING và TRAILING (mặc định). Để canh ngang thì ta có: TOP , CENTER (mặc định) và BOTTOM . |
void setMargin(Insets) Insets getMargin() |
Thiết lập hoặc lấy khoảng cách (pixel) giữa đường viền với nội dung của nút lệnh. |
void setFocusPainted(boolean) boolean isFocusPainted() |
Thiết lập hoặc lấy điểm khác biệt của nút lệnh khi nó được focus. |
void setBorderPainted(boolean) boolean isBorderPainted() |
Thiết lập hoặc lấy đường viền của nút lệnh được vẽ. |
void setIconTextGap(int) int getIconTextGap() |
Thiết lập hoặc lấy khoảng cách giữa văn bản và icon của nút lệnh. |
Method or Constructor | Purpose |
---|---|
void setMnemonic(int) char getMnemonic() |
Set or get the keyboard alternative to clicking the button. One form of the setMnemonic method accepts a character argument; however, the Swing team recommends that you use anint argument instead, specifying a KeyEvent.VK_X constant. |
void setDisplayedMnemonicIndex(int) int getDisplayedMnemonicIndex() |
Set or get a hint as to which character in the text should be decorated to represent the mnemonic. Note that not all look and feels may support this. |
void setActionCommand(String) String getActionCommand() |
Set or get the name of the action performed by the button. |
void addActionListener(ActionListener) ActionListener removeActionListener() |
Add or remove an object that listens for action events fired by the button. |
void addItemListener(ItemListener) ItemListener removeItemListener() |
Add or remove an object that listens for item events fired by the button. |
void setSelected(boolean) boolean isSelected() |
Set or get whether the button is selected. Makes sense only for buttons that have on/off state, such as check boxes. |
void doClick() void doClick(int) |
Programmatically perform a “click”. The optional argument specifies the amount of time (in milliseconds) that the button should look pressed. |
void setMultiClickThreshhold(long) long getMultiClickThreshhold() |
Set or get the amount of time (in milliseconds) required between mouse press events for the button to generate corresponding action events. |
Constructor | Purpose |
---|---|
JCheckBox(Action) JCheckBox(String) JCheckBox(String, boolean) JCheckBox(Icon) JCheckBox(Icon, boolean) JCheckBox(String, Icon) JCheckBox(String, Icon, boolean) JCheckBox() |
Create a JCheckBox instance. The string argument specifies the text, if any, that the check box should display. Similarly, the Icon argument specifies the image that should be used instead of the look and feel’s default check box image. Specifying the boolean argument as true initializes the check box to be selected. If the boolean argument is absent or false , then the check box is initially unselected. |
JCheckBoxMenuItem(Action) JCheckBoxMenuItem(String) JCheckBoxMenuItem(String, boolean) JCheckBoxMenuItem(Icon) JCheckBoxMenuItem(String, Icon) JCheckBoxMenuItem(String, Icon, boolean) JCheckBoxMenuItem() |
Create a JCheckBoxMenuItem instance. The arguments are interpreted in the same way as the arguments to the JCheckBox constructors, except that any specified icon is shown in addition to the normal check box icon. |
Constructor | Purpose |
---|---|
JRadioButton(Action) JRadioButton(String) JRadioButton(String, boolean) JRadioButton(Icon) JRadioButton(Icon, boolean) JRadioButton(String, Icon) JRadioButton(String, Icon, boolean) JRadioButton() |
Create a JRadioButton instance. The string argument specifies the text, if any, that the radio button should display. Similarly, the Icon argument specifies the image that should be used instead of the look and feel’s default radio button image. Specifying the boolean argument astrue initializes the radio button to be selected, subject to the approval of the ButtonGroup object. If the boolean argument is absent or false , then the radio button is initially unselected. |
JRadioButtonMenuItem(Action) JRadioButtonMenuItem(String) JRadioButtonMenuItem(Icon) JRadioButtonMenuItem(String, Icon) JRadioButtonMenuItem() |
Create a JRadioButtonMenuItem instance. The arguments are interpreted in the same way as the arguments to the JRadioButton constructors, except that any specified icon is shown in addition to the normal radio button icon. |
Constructor | Purpose |
---|---|
JToggleButton(Action) JToggleButton(String) JToggleButton(String, boolean) JToggleButton(Icon) JToggleButton(Icon, boolean) JToggleButton(String, Icon) JToggleButton(String, Icon, boolean) JToggleButton() |
Create a JToggleButton instance, which is similar to a JButton , but with two states. Normally, you use a JRadioButton or JCheckBox instead of directly instantiating JToggleButton , but JToggleButton can be useful when you do not want the typical radio button or check box appearance. The string argument specifies the text, if any, that the toggle button should display. Similarly, the Icon argument specifies the image that should be used. Specifying the boolean argument as true initializes the toggle button to be selected. If the boolean argument is absent or false , then the toggle button is initially unselected. |
Constructor or Method | Purpose |
---|---|
ButtonGroup() | Create a ButtonGroup instance. |
void add(AbstractButton) void remove(AbstractButton) |
Add a button to the group, or remove a button from the group. |
public ButtonGroup getGroup() (in DefaultButtonModel ) |
Get the ButtonGroup , if any, that controls a button. For example:ButtonGroup group = ((DefaultButtonModel)button.getModel()).getGroup(); |
public ButtonGroup clearSelection() | Clears the state of selected buttons in the ButtonGroup. None of the buttons in the ButtonGroup are selected . |
The following examples use buttons. Also see Examples that Use Tool Bars, which lists programs that add JButton
objects toJToolBar
s.
You can learn more about JavaFX button components from the following documents :
Source: https://final-blade.com
Category: Kiến thức Internet