С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
49 / 49 / 3
Регистрация: 07.12.2012
Сообщений: 201
Записей в блоге: 1
1

Смена иконки кнопки при её нажатии

13.02.2013, 03:53. Показов 5128. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Тут много лишнего кода дописал чтобы показать какие варианты пробовал и не вышло.
Коментарии некрасиво написаны но пока лучше не умею((
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
 
public class ButtonPanel extends JPanel {
   private ImageIcon nyanCatimage;
    public JButton NyanCat;
 
 
    public ButtonPanel()  {
        JButton blueButton=new JButton("blueButton");  //Создаём Кнопки
        add(blueButton);
        JButton yellowButton=new JButton("Yellow") ;
        add(yellowButton);
 
        try {
        URL nyanCat=new URL("http://kita.com.ua/uploads/tiny_mce/loadimg/th_bcdf4faf19cde24b2a87f37d2ee26eb2.jpg?hash=716");
        nyanCatimage= new ImageIcon(nyanCat);
 
        JButton NyanCat=new JButton("");
            NyanCat.setIcon(nyanCatimage);
 
        add(NyanCat);
            ImageAction NyanCatBottonAction=new ImageAction(); //Создаем действия
            NyanCat.addActionListener(NyanCatBottonAction); }
        catch (MalformedURLException e){}
 
      CollorAction yellowButtonAction=new CollorAction(Color.cyan);   
      CollorAction blueButtonAction=new CollorAction(Color.MAGENTA);
 
      blueButton.addActionListener(blueButtonAction);
     yellowButton.addActionListener(yellowButtonAction);
    }
   public void paintComponent(Graphics g){
     super.paintComponent(g);
 
   }
 
 
    private class CollorAction implements ActionListener{        //Меняет цвет фона
 
        private Color background;
        public CollorAction(Color c){
            background=c;
        }
 
 
        public void actionPerformed(ActionEvent event) {
           setBackground(background);
        }
 
    }
     private class ImageAction implements ActionListener{   //А вот тут не все гладко  должно менять
        private    ArrayList Cat =new ArrayList();         //иконку кнопки
        private boolean condition=true;                    //Создаем переключатель
        private ImageIcon CatImage;
 
 
 
       public ImageAction(){         //Список ссылок на изображения
 
            try{
               Cat.add( new URL("http://kita.com.ua/uploads/tiny_mce/loadimg/th_bcdf4faf19cde24b2a87f37d2ee26eb2.jpg?hash=716"));
               Cat.add(new URL("https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSeYqDPydKJQo4YFHCl0xjcHVxJysGiV6dmA5_yydN9UzFjhljE"));
            }
            catch (MalformedURLException e){}
            }
 
        public void actionPerformed(ActionEvent e) {   //Реакция на событие
            condition=!condition;                     //Меняем состояния переключателя
            System.out.println(condition);
            if (condition==true){
                CatImage=new ImageIcon((URL)Cat.get(0));        //Меняем иконку
 
 
            }
            else {
                CatImage=new ImageIcon((URL)Cat.get(1));     //Меняем иконку
            }
 
           NyanCat=new JButton(CatImage);    //А что должно быть здесь не совсем понятно
            NyanCat.setIcon(CatImage);       
            NyanCat.repaint();
        }
 
 
    }
}
Java
1
2
3
4
5
6
7
8
9
import javax.swing.*;
 
public class Frame extends JFrame {
    public Frame(){
        ButtonPanel Panel1=new ButtonPanel();
        setSize(400,400);
       add(Panel1);
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.net.URL;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.imageio.*;
import java.io.*;
 
public class Hello{
 
    public static void main(String[] args)throws IOException,NullPointerException{
        Frame Buttons =new Frame();
        Buttons.setVisible(true);
  }
}
Добавлено через 26 минут
И еще если я после 88 строки допишу add(NyanCat);
то оно будет добавлять кнопки с разными картинками но видимыми они станут только после перерисовки окна когда я изменю его размер, а можно как то заставить его перерисовывать окно каждый раз после того как будет происходить событие нажатия на кнопку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.02.2013, 03:53
Ответы с готовыми решениями:

Смена иконки при нажатии на кнопку
Здравствуйте, мне необходимо, чтобы у кнопки менялась иконка при нажатии на эту кнопку. Возможно ли...

смена картинки при нажатии кнопки
Доброго времени суток! Есть такой эффект на сайте disorg.ru, при нажатии кнопки меняет картинку,...

Смена картинок при нажатии кнопки
Что нужно написать к коде кнопки чтобы она по-очереди переключала картинки(типо как галерея) ?

Смена изображения при нажатии на кнопки
Доброе утро\День\Вечер! Есть проблема( Есть несколько кнопок и один Image1, как реализовать так...

1
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
13.02.2013, 12:02 2
Цитата Сообщение от Hideo_Kuze Посмотреть сообщение
И еще если я после 88 строки допишу add(NyanCat);
то оно будет добавлять кнопки с разными картинками но видимыми они станут только после перерисовки окна когда я изменю его размер, а можно как то заставить его перерисовывать окно каждый раз после того как будет происходить событие нажатия на кнопку.
Что вы делаете:
1. Создаете кнопку и помещаете ее на панель (строки - 24/27)
2. Добавляете ей обработчик (строка - 29)
3. В обработчике вы инициализируете кнопку по новой, но не куда не добавляете (строка - 85)
4. Что бы вы с ней не делали она не отобразится на понеле
5. Если вы добавите строку add(NyanCat), оно конечно появится на панели, если вы вызовите метод revalidate() для кнопки, но это не правильный подход
6. Правильно было бы: получить кнопку из события ActionEvent e, и уже с ней манипулировать

Пример
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
 
/**
 * @author Drygba
 *         Date: 13.02.13
 */
public class ButtonIcon{
    private JPanel panel;//панель на которой кнопка
    private JButton button;//кнопка 
 
    ButtonIcon(){
        createGUI();
    }
 
    public static void main(String[] arg) throws MalformedURLException{
        JFrame f = new JFrame("Button Image");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        ButtonIcon bi = new ButtonIcon();
        IconAction ia = new IconAction();//обработчик нажатия кнопки
 
        bi.button.setIcon(new ImageIcon(new URL("http://kita.com.ua/uploads/" +
                "tiny_mce/loadimg/th_bcdf4faf19cde24b2a87f37d2ee26eb2.jpg?hash=716")));
 
        bi.button.addActionListener(ia);
        f.add(bi.panel);
 
        f.pack();
        f.setVisible(true);
    }
 
    private void createGUI(){
        button = new JButton();
        panel = new JPanel();
        panel.add(button);
    }
}
 
class IconAction implements ActionListener{
 
    private ArrayList<URL> cat = new ArrayList();//хранилище адрессов для иконок
    private boolean flagIcon;
 
    IconAction(){
        //заполняем 
        try{
            cat.add(new URL("http://kita.com.ua/uploads/tiny_mce/loadimg/th_bcdf4faf19cde24b2a87f37d2ee26eb2.jpg?hash=716"));
            cat.add(new URL("https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSeYqDPydKJQo4YFHCl0xjcHVxJysGiV6dmA5_yydN9UzFjhljE"));
        }
        catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
 
    @Override
    public void actionPerformed(ActionEvent e){
        JButton b = (JButton) e.getSource();//получаем нашу кнопку
        if(flagIcon){
            b.setIcon(new ImageIcon(cat.get(0)));//меняем иконку 
            b.revalidate();//перерисовываем
            flagIcon = !flagIcon;
        }
        else{
            b.setIcon(new ImageIcon(cat.get(1)));
            b.revalidate();
            flagIcon = !flagIcon;
        }
    }
}
1
13.02.2013, 12:02
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2013, 12:02
Помогаю со студенческими работами здесь

Смена пароля при нажатии кнопки
есть форма представлена на рисунке... на edit&quot;е прописан код: if edit1.Text = 'vbnn' then...

Смена надписи при нажатии кнопки XML
Добрый день. Пишу небольшую программку в Android Studio 1.0. Есть кнопка, описанная в XML....

Смена цвета кнопки при нажатии на нее
Помгогите пожалуйста, возник такой вопрос: как сделать что бы при нажатии на кнопку она меняла...

Смена текста и изоображения при нажатии кнопки
У меня есть такой вопрос.Можно ли как-то сделать одну кнопку что бы она меняла по очереди при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru