У меня есть панель ColorChooser, как я могу это сделать, когда я нажимаю JButton в своей программе? EDIT: Я хочу, чтобы он отображался в новом кадре, который можно изменять, перемещать и закрывать.Как я могу создать JPanel, когда я нажимаю JButton?
ответ
Вам необходимо написать ActionListener для вашего JBu tton.
Что-то вроде этого:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
*
* @author roger
*/
public class MyActListener extends JFrame implements ActionListener{
public MyActListener(){
super("My Action Listener");
JButton myButton = new JButton("DisplayAnything");
myButton.addActionListener(this);
this.add(myButton);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
}
public static void main(String[] args) {
// TODO code application logic here
MyActListener ma = new MyActListener();
}
@Override
public void actionPerformed(ActionEvent e) { // YOur code for your button here
if("DisplayAnything".equals(e.getActionCommand())){
Color c = JColorChooser.showDialog(this, "Color Chooser", Color.BLACK);
JButton displayAnything = (JButton)e.getSource();
displayAnything.setBackground(c);
}
}
Посмотрите на Java tutorials из How to write an ActionListener. Посмотрите на действительно большой индекс, чтобы увидеть основные руководства по Java в целом.
Могу ли я получить обратную связь от дальнейших читателей, если это правильный способ написать прослушиватель действий для JButton? когда количество кнопок начинает расти, лучше ли сделать класс для него, который реализует ActionListener? или вместо 'myButton.addActionListener (this);' make 'myButton.addActionListener (new MouseListener() {...})' – Roger
Я лично предпочитаю использовать анонимные внутренние классы, как последний пример в вашем комментарии, и делать вызовы классам, которые реализуйте логику оттуда. Таким образом, нет необходимости определять команды действий, и, как вы заметили, ваш метод actionPerformed будет довольно длинным при добавлении новых кнопок. Все ваши примеры действительны и используются, конечно. – mort
Спасибо! Еще один вопрос: как я могу заставить кнопку отображать цвет, который я выбираю? –
Вы можете посмотреть на Swing Tutorial Java - ColorChooserDemo2: http://docs.oracle.com/javase/tutorial/uiswing/components/colorchooser.html#advancedexample
В принципе, JColorChoose может быть показан в диалоге: http://docs.oracle.com/javase/6/docs/api/javax/swing/JColorChooser.html
Color newColor = JColorChooser.showDialog(
ColorChooserDemo2.this,
"Choose Background Color",
banner.getBackground());
Для кнопки, чтобы активировать этот файл Chooser:
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//color is whatever the user choose
Color color = JColorChooser.showDialog(currentComponent, "Color Chooser", Color.WHITE);
JButton thisBtn = (JButton)e.getSource(); //or you can just use button if that's final or global
thisBtn.setBackground(color);
}
});
Спасибо :) Как я могу реализовать это в своем ActionPerformed от моего JButton? –
Хорошо спасибо, еще один вопрос, как я могу заставить кнопку отображаться цветом, который я выбираю? –
- 1. Как я могу перенести компонент JButton, я нажимаю на второй JButton, на который я нажимаю?
- 2. Как я могу создать JButton?
- 3. Как я могу создать JButton?
- 4. Как я возвращаю значение jcombobox, когда я нажимаю jbutton
- 5. Как я могу обновить текст JButton, когда я нажимаю на него?
- 6. Как добавить новый экземпляр JPanel каждый раз, когда я нажимаю JButton в JFrame в Java Swing
- 7. когда я нажимаю JButton, я хочу, чтобы эта игра начиналась
- 8. Как я могу использовать JButton на границе JPanel?
- 9. как забрать номер каждый раз, когда я нажимаю JButton
- 10. Как я могу переместить JButton в правую сторону моего JPanel?
- 11. Моя рамка застревает, когда я нажимаю JButton, почему? GUI
- 12. Когда я нажимаю «Run», ничего не происходит
- 13. Как вызвать функцию, когда я нажимаю jPanel (Java)?
- 14. Как я могу создать JScrollPane высоту JPanel
- 15. Как заставить кнопку отображать диалог, когда я нажимаю на него?
- 16. Как я могу сделать эту работу JButton
- 17. Форма не появится, когда я добавляю JButton в JPanel
- 18. Как я могу создать 2 экземпляра JButton с одинаковой шириной
- 19. Перерисовать только, когда я нажимаю кнопку
- 20. Мне нужен JPanel для отображения, когда я нажимаю на JToggleButton
- 21. Как я могу вызвать событие, когда я нажимаю Enter?
- 22. Как я могу зацикливать видео, когда я нажимаю на него?
- 23. Как я могу изменить содержимое UITableView, когда я нажимаю кнопку
- 24. Как я могу изменить gridview, когда я нажимаю imageview
- 25. Как я могу сериализовать JButton []
- 26. Как изменить цвет фона, когда я нажимаю кнопку
- 27. Как я могу получить конкретный Jbutton?
- 28. Почему я получаю исключение NullPointerException, когда я нажимаю «Новая игра»?
- 29. Как изменить текст в JTextArea, когда я нажимаю кнопку?
- 30. Как я могу повернуть JPanel?
Нужна дополнительная информация. Появиться откуда? Это же окно из-за другой панели? Всплывающее окно в диалоговом окне? –
Я хочу, чтобы он отображался в новом кадре, который можно изменять, перемещать и закрывать. –
как вы получили ColorChooser? сделайте то же самое, что и с вашей собственной панелью. – Randy