На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> NET Beans IDE JFrame
    Добрый день! Не давно стал изучать java и натолкнулся на такой вопрос.
    ExpandedWrap disabled
      public class JFrame extends javax.swing.JFrame {
       
         public void combobox(int i, String sh){
             jComboBox1.addItem("sh");
             System.out.println(sh);
          }

    ExpandedWrap disabled
      public class EniseyJV {
       
          public static List<PcapIf> alldevs = new ArrayList<PcapIf>();
          public static StringBuilder errbuf = new StringBuilder();
          public static JFrame frm = new JFrame();
          public static void InitPcap(){
              int r = Pcap.findAllDevs(alldevs, errbuf);  
              if (r == Pcap.NOT_OK || alldevs.isEmpty()) {  
                  System.err.printf("Can't read list of devices, error is %s", errbuf.toString());  
                  return;  
              }
              int i = 0;  
              for (PcapIf device : alldevs) {  
                  String description = (device.getDescription() != null) ? device.getDescription()  
                          : "No description available";  
              frm.combobox(5, "device.getName()");// description);  
              }  
          }
          public static void main(String[] args) {
              // TODO code application logic here
              eniseyjv.JFrame.main(args);
              InitPcap();
              
              
          }

    есть 2 класса один JFrame а другой EniseyJV, в отдельных файлах. Как на яве обращаются к JFrame который имеет combobox. Из моего кода я обращаюсь к функции которая находится в JFrame, я к ней обращаюсь но ничего не происходит в combobox. Подскажите как правильно обращаться к виджетам. Спасибо
      Пожалуйста, вставьте код с объявлением пакетов (если они есть) и импортов. Так будет проще запустить Ваш проект и найти ошибку.
        Только закоментируете библиотеки pcap. Спасибо.
        Прикреплённый файлПрикреплённый файлEniseyJV.7z (13,49 Кбайт, скачиваний: 108)
          Ох, у Вас там (а так же в голове, похоже, уж извините) каша.

          Класс eniseyjv.JFrame -- типовая форма, сгенерированная визуальным редактором. (Я не противник их использования при условии, что есть понимание сгенерированного кода.) Он содержит готовый метод main, который вы вызываете из другого, написанного самостоятельно -- допустимо, если нужно просто показать окно. А теперь что происходит на самом деле.

          Главная строка в методе eniseyjv.JFrame.main (его редактор IDE по умолчанию сворачивает, но заглянуть внутрь полезно):
          new JFrame().setVisible(true);
          -- создание и отображение новой формы на экране. Немного выше находится настройка скина для Swing.
          В классе EniseyJV Вы создаёте новый экземпляр класса eniseyjv.JFrame в статической переменной, но к тому, с которым работает метод eniseyjv.JFrame.main он никак не относится.
          Наконец, в классе eniseyjv.JFrame зачем-то объявлена ещё одна статическая переменная, к которой Вы обращаетесь в методе combobox(int,String); вместо того, чтобы работать с текущим объектом.

          В общем, вот работающий вариант. Прикреплённый файлПрикреплённый файлEniseyJV.7z (13,81 Кбайт, скачиваний: 112) Отличие в том, что создаётся только один экземпляр JFrame и над ним производятся все действия.
            Большое спасибо очень доступно объяснили, теперь все понятно.
            И еще один вопрос функция setSkin что она выполняет в програме и если я захочу еще к одной форме обратиться, нужно будет писать что наподобие функции setSkin. Спасибо.
              Подгружает настройки кастомного внешнего вида для Swing (в случае ошибки выводит сообщение, сохраняя работоспособность программы). Закомментируйте её вызов -- увидете, как Swing выглядит по умолчанию.

              Код полностью скопирован из метода main, сгенерированного NetBeans-ом. Поскольку там используются только статические методы -- судя по всему, достаточно выполнить его только один раз.

              UPD: то есть, используются статические методы для управления внешним видом Swing. У самого скина вызываются и обычные. И, самое главное, ссылки на форму не фигурируют вообще.
              Сообщение отредактировано: kopilov -
                Все теперь понятно, большое спасибо за то что потрудились объяснить :D
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0263 ]   [ 19 queries used ]   [ Generated: 26.04.24, 15:57 GMT ]