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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с JStatusBar, Работа с компонентом статуса 
:(
    Опции темы
kaa2006
Дата 15.7.2006, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что-то никак не могу понять как заставить работать JStatusBar никак просто панельна которую кинешь Label. А как StatusBar в Delphi.
Если кто знает подскажите или укажите где можно глянуть работу с этим компонентом.  smile  
PM MAIL   Вверх
LSD
Дата 15.7.2006, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Что за компонент такой и откуда он взялся? 


--------------------
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   Вверх
kaa2006
Дата 16.7.2006, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Sory!!! Это компонент JLabel просто при создании в JBuilder2005 этот компонент выглядит как панель и называется statusBar
но вопрос все равно остается открытым как сделать панель статуса. Возможно это в Java или нет.
Укажите где можно посмотреть. smile    
PM MAIL   Вверх
LSD
Дата 16.7.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Стандартного компонента нет. Но можно сделать самому, например так:
Код
JPanel panel = new JPanel(new GridLayout(1, 0));

JLabel label1 = new JLabel("It's OK");
label1.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
label1.setHorizontalAlignment(JLabel.RIGHT);
panel.add(label1);

JLabel label2 = new JLabel("50% done");
label2.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
label2.setHorizontalAlignment(JLabel.RIGHT);
panel.add(label2);

JFrame frame = new JFrame("Test frame");
frame.getContentPane().add(new JColorChooser(), BorderLayout.CENTER);
frame.getContentPane().add(panel, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
 


--------------------
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   Вверх
kaa2006
Дата 19.7.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо,  посмотрю. 
PM MAIL   Вверх
kaa2006
Дата 23.7.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Такой вопрос, а как в этой панели определять состояние компонента. Т.е. пример в делфи можно при наведении на кнопку или другой компонент получать информацию о компоненте в панели статуса.
Т. е надо переопределять метод для каждого компонента и выполнять присваения к JLabel. Так надо или есть какой-то способ по проще. smile  
PM MAIL   Вверх
powerOn
Дата 23.7.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

Репутация: 31
Всего: 159



Цитата(kaa2006 @  23.7.2006,  23:51 Найти цитируемый пост)
Так надо или есть какой-то способ по проще.

Надо, и думается мне, что в Делфи делается также, но это скрыто во внутреней логике компонента.
 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Wowa
Дата 24.7.2006, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



посмотри actionListener, в нем прямо можешь проверить от какого компонента "событие" пришло и сделать соответствующее действие. 
PM WWW   Вверх
kaa2006
Дата 25.7.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как проверить от какого компонента пришло. (наверное получить какого класса компонент) И можно ли по названию? 
PM MAIL   Вверх
Samuil
Дата 25.7.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: нет
Всего: 6



Если я правильно понял то ты имеешь в виду это:    
Код
public void actionPerformed(ActionEvent e) {
  if (e.getSource() == ...) {
  ....
  }
}
  


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
powerOn
Дата 26.7.2006, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

Репутация: 31
Всего: 159



Можно попробовать так:

Код

import java.awt.Component;
import java.awt.event.MouseMotionAdapter;

public class NewJFrame extends javax.swing.JFrame {
    
    MouseMotionAdapter mma = new MouseMotionAdapter() {
        public void mouseMoved(java.awt.event.MouseEvent evt) {
                NewJFrame.this.jLabel1.setText("" + evt.getSource().getClass());
        }
    };
    
    public NewJFrame() {
        initComponents();
        for(Component c : this.getContentPane().getComponents()) {
            c.addMouseMotionListener(mma);
        }
    }
    
    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jCheckBox1 = new javax.swing.JCheckBox();
        jRadioButton1 = new javax.swing.JRadioButton();
        jTextField1 = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jButton1.setText("jButton1");
        getContentPane().add(jButton1, java.awt.BorderLayout.CENTER);

        jLabel1.setText("jLabel1");
        getContentPane().add(jLabel1, java.awt.BorderLayout.SOUTH);

        jCheckBox1.setText("jCheckBox1");
        jCheckBox1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBox1.setMargin(new java.awt.Insets(0, 0, 0, 0));
        getContentPane().add(jCheckBox1, java.awt.BorderLayout.WEST);

        jRadioButton1.setText("jRadioButton1");
        jRadioButton1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jRadioButton1.setMargin(new java.awt.Insets(0, 0, 0, 0));
        getContentPane().add(jRadioButton1, java.awt.BorderLayout.EAST);

        jTextField1.setText("jTextField1");
        getContentPane().add(jTextField1, java.awt.BorderLayout.NORTH);

        pack();
    }
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
    
    private javax.swing.JButton jButton1;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JRadioButton jRadioButton1;
    private javax.swing.JTextField jTextField1;
    
}
 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
kaa2006
Дата 28.7.2006, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как можно определить не класс, а имя созданного объекта из множество компонентов.
Т.е. к примеру создаются на фрейме несколько компонент. Допустим JLabel lab1= new JLabel(); JTextField jTextField1 = new JTextField();
JButton jButton1= new JButton(); То есть нужно определить не класс swing.javax.JLabe ...,l а имена созданных объектов lab1,  jTextField1, jButton1.
Или как можно обращаться к свойствам компонентов без использования названий. 
PM MAIL   Вверх
Wowa
Дата 28.7.2006, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



надо определять не имена компонентов, а команды, которые посылаются компонентами(например, при нажатии мышкой).
команду можно задавать через .cmd('my command')

а в обработчике  - проверять какая команда поступила и выполнять действие. Имена компонентов тут непричем. 
PM WWW   Вверх
powerOn
Дата 28.7.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

Репутация: 31
Всего: 159



Цитата(kaa2006 @  28.7.2006,  01:16 Найти цитируемый пост)
То есть нужно определить не класс swing.javax.JLabe ...,l а имена созданных объектов lab1,  jTextField1, jButton1.


Эти имена (имена переменных) используются только в исходниках, после компиляции от них мало что останется. В принципе, у всех объектов наследованных от JComponent имеется свойство String name и соответствующие setter/getter методы. Хотя не факт что getSource() вернет нам JComponent, это еще во время выполнения проверять надо будет... Если это свойство явно инициализировать нужной тебе информацией, то обратиться к нему из обработчика события не составит труда. 

Цитата(kaa2006 @  28.7.2006,  01:16 Найти цитируемый пост)
Или как можно обращаться к свойствам компонентов без использования названий.  


Тут Reflection тебе поможет, но это не эффективно. Лучше правильно архитектуру продумать, чем искаль сомнительные лазейки.





 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
kaa2006
Дата 29.7.2006, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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