О GUI в Java? - PullRequest
       22

О GUI в Java?

0 голосов
/ 06 января 2012

Я пытаюсь изучить GUI на Java, но я немного запутался и задаюсь вопросом, в чем разница между этим кодом для добавления компонентов в окне? Когда я просматриваю примеры кода, они сильно различаются, некоторые примеры используют JPanel и просто добавляют, написав: panel.add (что-то); Некоторый код просто использует add (что-то); или contentPane.add (что-то); Мне просто интересно. Спасибо!

JList text;

JPanel panel = new JPanel();
frame.add(panel);
panel.add(text);

-

setLayout(new FlowLayout);
add(text);

-

Container contentPane;
contentPane = getContentPane();
contentpane.setLayout(new FlowLayout);
contentPane.add(text);

Ответы [ 2 ]

2 голосов
/ 07 января 2012

Различия, которые вы видите, имеют большее отношение к языку Java, а не к фактическим выполняемым операциям.

Если вы вызываете метод без указания конкретного объекта, язык Java предполагает, чтоВы вызываете метод для объекта this или для объекта, в котором вы сейчас работаете.

public class MyClass {

  public void doThis() {
  }

  public void doThat() {
    // the following line will call this.doThis()
    doThis();
    // this is exactly the same as the line above, except it is explicitly stated
    this.doThis();
  }

}

Иногда метод хочет вызвать метод для другого объекта.В этом случае у вас есть переменная, содержащая ссылку на «другой» объект, и когда вы вызываете метод для этого объекта, вы должны разыменовать ссылку на имя, один из примеров может выглядеть так:

public Class MyOtherClass {

  public void doTheOtherThing(MyClass myClass) {
    myClass.doThis();
  }

}

Различные примеры делают программирование на Swing по-разному.Некоторые примеры имеют тенденцию быть более объектно-ориентированными, чем другие.Чтобы проиллюстрировать, что если вам нужна «специальная» кнопка, один пример может создать подкласс для кнопки и настроить ее соответствующим образом в подклассе, в то время как в другом примере может быть создана кнопка без подкласса и сконфигурирована ее извне класса «JButton».

Хорошее объектно-ориентированное программирование предпочитает создание подклассов как решение по сравнению с внешней конфигурацией.Это связано с тем, что код для настройки кнопки становится частью нового подкласса кнопки, и поэтому, когда один архитектурно перемещает кнопку в разные места с помощью программы, код конфигурации не может быть случайно отделен от кнопки.Иногда анализ наилучшей объектно-ориентированной структуры может быть дорогостоящим, и в этом случае можно выпустить код с большим количеством «объектно-внешних» влияний.

0 голосов
/ 07 января 2012

Разница заключается в том, где находится код. Второй раздел кода будет иметь смысл только внутри метода класса, который имеет setLayout и add методы; скорее всего, это связано с тем, что класс представляет собой пользовательский компонент графического интерфейса, который наследуется от JPanel или другого Container.

Третий раздел вызывает getContentPane, который является методом JFrame, поэтому он, скорее всего, наследуется от этого класса.

Если вы отредактируете свой вопрос, чтобы опубликовать окружающий контекст примера кода (или ссылки на него), я (или кто-то более опытный в Swing, чем я) мог бы дать более подробное объяснение того, как он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...