import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class PictureButton {
public static void main(String[] args) {
ButtonFrame frame = new ButtonFrame();
frame.setSize(300, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class ButtonFrame extends JFrame{
JLabel label=new JLabel();
int i=0;
ButtonFrame(){
Icon icon = new ImageIcon("icon.gif");
JButton button = new JButton(icon);
// додаємо обробник подій, що визначається у внутрішньому класі
button.addActionListener(new ActionListener( ) {
public void actionPerformed(ActionEvent ae) {
i++;
label.setText("Натиснуто разів: "+ i);
}
});
//встанолюємо менеджер розташування
setLayout(new FlowLayout( ));
add(button);
add(label);
}
}
Якщо ми не використовуємо панелі, то при розміщенні компонентів напряму у фрейм необхідно встановити менеджер розташування, який керує розміщенням елементів один відносно одного (дивіться розділ про менеджери розташування). JFrame немає менеджера розташування по замовчуванню. У JPanel використовується по замовчуванню FlowLayout. Це найпростіший менеджер, який розміщує компоненти один за одним.
Необхідно зазначити, що при натисненні кнопки чи іншого компонента в джава генерується відповідний рядок «діюча команда» чи по іншому «команда дії» (action command). Це просто рядок (String), що дозволяє ідентифікувати компонент, що надсилає подію. По замовчуванню у JButton діюча команда та ж, що і мітка кнопки.
Щоб отримати діючу команду з події, необхідно викликати метод getActionCommand() для відповідної події. Наступний код визначає чи натиснута клавіша Yes:
public void actionPerformed(ActionEvent e){
if (e.getActionCommand( ).equals("Yes") {
//the user pressed "Yes"; do something
...
}
}
Можна змінити діючу команду викликавши метод кнопки setActionCommand(). Наступний рядок змінює команду на «confirm»:
myButton.setActionCommand("confirm");
Використання для кнопок відмінних від їхніх міток діючих команд
дозволяє полегшити інтернаціоналізацію інтерфейсу команд. Тобто
переведення інтерфейсу з однієї мови на іншу. Так назви кнопок можуть
бути записані у файл, який запросто може модифікуватися і його зміна не
призведе до необхідності переписування коду програми. Таким чином
перекладом інтерфейсу на іншу мову можуть здійснювати і непрограмісти.Як і у компонента JLabel, написи у JButton можна задавати за допомогою HTML:
JButton htmlButton = new JButton( "<html>"
+ "В<font size=-1>икористовуємо<font size=+0> "
+ "<br> HTML ");
Повний варіант книги знаходиться на Вікіпідручнику

Немає коментарів:
Дописати коментар