Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маленький тест, :) 
:(
    Опции темы
Domestic Cat
Дата 21.9.2004, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



smile.gif

Таки как насчет баттона с листенером?



--------------------

PM   Вверх
redrick
Дата 22.9.2004, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 3
Всего: 5



Код


/**
* User: red
* Date: 22.09.2004
* Time: 1:53:30
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class A extends JFrame implements ActionListener
{
A()
{
  setSize(600, 200);
  MyButton button = new MyButton();
  getContentPane().add(button, BorderLayout.CENTER);
  button.addActionListener(this);
  button.addActionListener(new SomeClass());
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setVisible(true);
}

public void actionPerformed(ActionEvent ae)
{
  System.out.println("A.actionPerformed called");
}

public static void main(String [] args)
{
  new A();
}
}

class MyButton extends JButton
{
   protected void fireActionPerformed(ActionEvent event) {
       
       ActionListener[] listeners = getActionListeners();

       for(int i = 0;i < listeners.length;i++){
           if(listeners[i] instanceof SomeClass){
               ((SomeClass)listeners[i]).somethingHappened(event);
           };
       };
   }

   MyButton()
{
  super("Button");
}
}

class SomeClass implements ActionListener
{
public void actionPerformed(ActionEvent ae) // Ne dolzhen vyzyvat'sja!
{
  System.out.println("SomeClass.actionPerformed called");

}

public void somethingHappened(ActionEvent ae)
{
  System.out.println("SomeClass.somethingHappened called");
}
}


PS

блин, времени нет совсем - вычматы надо ботать =)
но раз уж вопрос совсем повис =)


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
Domestic Cat
Дата 22.9.2004, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Please try again: interval [0.6839556, 0.7506556], random : 0.5929308


ОК biggrin.gif
Мой вариант был - написать свой диспетчер:
Код

class MyButton extends JButton
{
   Vector listeners = new Vector(2);
   MyButton()
   {
       super("Button");
   }
   
   public void addActionListener(ActionListener l)
   {
       listeners.add(l);
   }
   
   protected void processEvent(AWTEvent e)
   {
       if (e instanceof MouseEvent && ((MouseEvent)e).getID() == MouseEvent.MOUSE_CLICKED)
       {
           for (int i = 0; i < li.size(); i++)
           {
               if (li.get(i) instanceof SomeClass)
               {
                   ((SomeClass) li.get(i)).somethingHappened(new ActionEvent(this,
                                                                ActionEvent.ACTION_PERFORMED, ""));
               } else {
                   ((ActionListener)li.get(i)).actionPerformed(new ActionEvent(this,
                                                                 ActionEvent.ACTION_PERFORMED, ""));
               }
           }
       } else {
       super.processEvent(e); }
   }
}


Добавлено @ 01:38
----------------------------------------------------

Так что твой вариант покороче будет smile.gif. Ну, завтра будет новый вопрос, а сейчас идти надо.

Это сообщение отредактировал(а) Domestic Cat - 22.9.2004, 01:39


--------------------

PM   Вверх
TrivialCore
Дата 22.9.2004, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Ну, завтра уже наступило, вставай, задавай вопрос =)
PM MAIL   Вверх
AntonSaburov
Дата 22.9.2004, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(TrivialCore @ 22.9.2004, 11:31)
Ну, завтра уже наступило, вставай, задавай вопрос

Дай человеку поспать - он все-таки в Канаде живет.
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 22.9.2004, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



И так в 5 утра встаю, а меня уже в пол второго начинают будить smile.gif

------------------

На рисунке - 4 запущенных версии одной программы (жизненно важные места закрашены smile.gif ). Цветовое оформление можно менять путем наж атия кнопки в меню. Вопрос - как это реализовано?

Это сообщение отредактировал(а) Domestic Cat - 22.9.2004, 15:32

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  pic.jpg


--------------------

PM   Вверх
TrivialCore
Дата 22.9.2004, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Какие-то махинации с Look and Feel, но какие - не знаю, что то вроде переопределения ComponentUI или что-то в том роде?
PM MAIL   Вверх
Domestic Cat
Дата 22.9.2004, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Хм. В общем, все это - Метал ЛИФ. Для установки цвета используется UpdateComponentTreeUI +
ишшо 1 строка smile.gif Собственно цвета сидят в одном классе (для каждого варианта свой класс) с
мемберами и геттерами /сеттерами для них.

Вопрос тогдa такой: какаяето строka и оt какогo класса наследуют вse эti классы ?

Это сообщение отредактировал(а) Domestic Cat - 22.9.2004, 17:35


--------------------

PM   Вверх
LSD
Дата 22.9.2004, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Эти выкрутасы реализованны в демке Metalworks из JDK.
Класс который отвечает за расцветку: [b]javax.swing.plaf.metal.MetalTheme[b] (вернее его наследники, т.к. он абстрактный). Установка конкретной темы производится так:
Код
javax.swing.plaf.metal.MetalLookAndFeel.setCurrentTheme(new javax.swing.plaf.metal.DefaultMetalTheme());



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Domestic Cat
Дата 22.9.2004, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



smile.gif Все верно, за исключением того, что я наследовал от DefaultMetalTheme.
Цитата
Установка конкретной темы производится так:
Код
javax.swing.plaf.metal.MetalLookAndFeel.setCurrentTheme(new javax.swing.plaf.metal.DefaultMetalTheme());


Точнее, так
Код

MetalLookAndFeel.setCurrentTheme(new MyTheme());


Please try again: interval [0.23701656, 0.30371657], random : 0.34426746

------------------ Next

немного не v тему, но что это за язык:

Код

import sys
class Student (Employee) :
      "Student class"
      default_age = 20;
      def __init__(self, age)
             self.default_age = age

def quizquestions() :
      questions = {}
      questions["1"] = "How old are you?"
      questions["2"] = "Whats your name?"
      return questions

def compose(func1, func2, y) :
      f = lambda x, f1 = func1, f2 = func2: f1(f2(x))
      return f(y)


biggrin.gif

Это сообщение отредактировал(а) Domestic Cat - 22.9.2004, 18:46


--------------------

PM   Вверх
redrick
Дата 22.9.2004, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 3
Всего: 5



Python


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
Domestic Cat
Дата 22.9.2004, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Правда smile.gif

Please try again: interval [0.2837036, 0.3504036], random : 0.04220589



--------------------

PM   Вверх
Domestic Cat
Дата 24.9.2004, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



------------

1. Будет ли проиcxодить утечка памяти при запуске этой программы:

Код

public class Test
{
   
   public static void main(String[] args)    
   {
       for (int i = 0; i < 1000000; i++)
       {
           new X();
       }
   }
}

class X
{  
   public void finalize() throws Exception
   {
       throw new Exception();
   }
}



--------------------

PM   Вверх
TrivialCore
Дата 24.9.2004, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Что значит - утечка памяти? К StackOverflowError, я думаю, данный код не приведет, просто выкинет 100000 иксепшонов и все.
PM MAIL   Вверх
Domestic Cat
Дата 24.9.2004, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(TrivialCore @ 24.9.2004, 08:29)
Что значит - утечка памяти? К StackOverflowError, я думаю, данный код не приведет,


Объекты создаются не на стеке, так ведь ? ч то будет делать сборщик мусора в этой ситуации?

Цитата(TrivialCore @ 24.9.2004, 08:29)
просто выкинет 100000 иксепшонов и все.


не знаю, не знаю smile.gif


--------------------

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2296 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.