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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JtextField невиден при обращении к нему по ссылке 
:(
    Опции темы
Metal_Heart
Дата 1.4.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


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

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



Многоуважаемые, ответьте мне на такой вопросик.

Создаю JTextField, вывожу в нем текст таким способом:

Код

  private JTextField textField1;
  
  ...
  
  Form.textField1.setText("abc");


на экране вижу свой текст,
а если так:

Код

    java.util.Arrays.fill( JText , new JTextField() ) ;
    JText[0].add(textField1);
 
       ...

       Form.JText[0].setText("abc");

то ничего не вижу smile(
ПОЧЕМУ?!!!

Это сообщение отредактировал(а) Metal_Heart - 1.4.2005, 16:01


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
batigoal
Дата 1.4.2005, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Что-то я вообще ничего не улавливаю... В первом случае у тебя вообще нет никакого add(). Попробуй убрать его во втором случае.
JText - переменная? Назови ее по-другому,такое название обычно ассоциируется с классом.
А вообще, напиши код поподробнее, с объявлениями.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Metal_Heart
Дата 1.4.2005, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


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

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



Вот он работующий вариант:

Код

public class form
{
  private JPanel mainPanel;
  private JTextField textField1;
  private JTextField textField2;
  private JTextField textField3;
  private JTextField textField4;
  private JTextField[] JText = new JTextField[4];

  public form()
  {
  }

  public static void main(String[] args)
  {
    final form form = new form();
    final JFrame frame = new JFrame("any form");
    frame.setContentPane(form.mainPanel);

    form.textField1.setText(st[0].GetText());
      form.textField2.setText(st[1].GetText());
      form.textField3.setText(st[2].GetText());
      form.textField4.setText(st[3].GetText()); 

    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.show();
  }
}



а вот неработующий:

Код

public class form
{
  private JPanel mainPanel;
  private JTextField textField1;
  private JTextField textField2;
  private JTextField textField3;
  private JTextField textField4;
  private JTextField[] JText = new JTextField[4];

  public form()
  {
    java.util.Arrays.fill( JText , new JTextField() ) ;
    JText[0].add(textField1);
    JText[1].add(textField2);
    JText[2].add(textField3);
    JText[3].add(textField4);
  }

  public static void main(String[] args)
  {
    final form form = new form();
    final JFrame frame = new JFrame("any form");
    frame.setContentPane(form.mainPanel);

    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.show();
  }
}


Про твоё замечание о заглавных/строчных буквах я помню, исправлю чуть позже ..



--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
batigoal
Дата 1.4.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Гм... У меня они оба не работающие... А что ты, собственно, хочешь сделать?

Код

final form form = new form();

Классная строчка smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Metal_Heart
Дата 1.4.2005, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


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

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



Хароший вопрос, мне нужен массив этих JTextField-ов, чтоб обращаться к ним по индексу а не по имени. Вот всего-то.
Добавлено @ 16:34
а почему у тебя не заработало-то?

Я понял! Тебе нужен исчо один класс:
Код

public class struct
{
  int        ID=0;
  String     strText;

  int GetID() {return ID;}
  void SetID(int id) {ID=id;}

  String GetText() {return strText;}
  void   SetText(String str) {strText=str;}
}


сорри

Это сообщение отредактировал(а) Metal_Heart - 1.4.2005, 16:36


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
batigoal
Дата 1.4.2005, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Цитата(Metal_Heart @ 1.4.2005, 16:33)
Я понял! Тебе нужен исчо один класс:

smile
Да не, с классом я и так понял. Просто у меня в обоих случаях рисуется пустое окно, без всего.
Тебе нужно их вывести на mainpanel?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Metal_Heart
Дата 1.4.2005, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


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

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



ага
Добавлено @ 16:48
ну, вообще, на форму, чтоб видно было всем smile


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
batigoal
Дата 1.4.2005, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Понял - вот эта строка
Код

java.util.Arrays.fill( JText , new JTextField() ) ;

присваивает всем ссылкам в массиве ОДИН И ТОТ ЖЕ ОБЪЕКТ - тот самый, который нам вернул конструктор new JTextField(). Так что в данном случае этот метод неприменим.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Domestic Cat
Дата 1.4.2005, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Классы принято называть с большой буквы: MyForm
Поля и методы - с маленькой : myMethod

Конкретно по коду:
Код

public class form
{
  private JPanel mainPanel;
  private JTextField textField1;
  private JTextField textField2;
  private JTextField textField3;
  private JTextField textField4;
  private JTextField[] JText = new JTextField[4];

  public form()
  {
    java.util.Arrays.fill( JText , new JTextField() ) ;
    JText[0].add(textField1);
    JText[1].add(textField2);
    JText[2].add(textField3);
    JText[3].add(textField4);
  }

  public static void main(String[] args)
  {
    final form form = new form();
    final JFrame frame = new JFrame("any form");
    frame.setContentPane(form.mainPanel);

    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.show();
  }
}



1. Непонятno, зачем нужен массив, достаточно написать
Код

  private JTextField textField1 = new JTextField();
  private JTextField textField2 = new JTextField();
  private JTextField textField3 = new JTextField();
  private JTextField textField4 = new JTextField();

2.Tы устанавливаешь в качествe контент пейнa пустую панель, сначала на неe нужно добавить текстфилды:
Код

mainPanel.add(textField1);
mainPanel.add(textField2);
mainPanel.add(textField3);
mainPanel.add(textField4);

Правда, тебe нужно еще подучить, что такое layoutы, т.к. выглядеть это будет нe очень красиво.

Вообще, лучше пo книгe заниматься, в книгах всегда есть примеры...


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

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


а почему бы и нет?
**


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

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



Благодарю, уважаемые!

Мда, я сглупил в том что использовал оператор NEW:
Код

private JTextField[] JText = new JTextField[4];


вообще-то мне надо:
Код

private JTextField[] JText = {JTextField1,JTextField2,JTextField3,JTextField4};


Книжку нашел smile))
а про лайоуты - я форму набросал заранее в ИДЕЕ, чтоб упростить себе задачу (пока).
Когда всё новое, ничего исчо не знаешь - тяжеловато.

Так вот скажите мне как заменить предыдущую строку на что-то вроде:
Код

private JTextField[] JText; 

...

    JText[0]=textField1;
    JText[1]=textField2;
    JText[2]=textField3;
    JText[3]=textField4;



чтоб на уже существующие textField-ы вывести тексты ?

Добавлено @ 09:22
А по поводу:
" Классы принято называть с большой буквы: MyForm
Поля и методы - с маленькой : myMethod"

Lamer George - меня уже поправлял, следующий пример сделаю как надо, обещаю! smile


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
batigoal
Дата 4.4.2005, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Вот этим кодом
Код

private JTextField[] JText; 

...

    JText[0]=textField1;
    JText[1]=textField2;
    JText[2]=textField3;
    JText[3]=textField4;

ты, по сути, делаешь лишнюю работу. Зачем объявлять массив, если ты все равно используешь отдельные объекты?

Я бы сделал так:
Код

import javax.swing.*;
import java.awt.*;

public class Form
{
  public static void main(String[] args)
  {
      JPanel mainPanel = new JPanel();
      JTextField[] JText = new JTextField[4];
      final JFrame frame = new JFrame("any form");
      frame.setContentPane(mainPanel);
      mainPanel.setLayout(new GridLayout(2,2));

      for (int i = 0; i < JText.length; i++)
      {
          JText[i] = new JTextField(Integer.toString(i));
          mainPanel.add(JText[i]);
      }

    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.show();
  }
}


GridLayout(2,2) - расставит добавленные элементы в виде таблицы 2х2.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Metal_Heart
Дата 4.4.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


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

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



Большой спасиб


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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