2016-03-14 2 views
0

только короткое :)Добавление нескольких элементов в панели At Once

У меня есть

 panel8.add(label4).setVisible(true); 
     panel8.add(panel4).setVisible(true); 
     panel8.add(button1).setVisible(true); 
     panel8.add(panel7).setVisible(true); 

Но я хочу, чтобы иметь что-то вроде этого:

panel8.add(label4, panel4, button1, panel7).setVisible(true); 

Как правильный синтаксис ? Или это не возможно?

Заранее спасибо.

+1

1) Дайте вашему классу метод, который позволяет это произойти. 2) Не взаимодействуйте напрямую с полями другого класса, так как это безумие. –

+1

Кроме того, вам не нужно вызывать 'setVisible (...)', как вы делаете. По умолчанию свойство видимости компонента истинно, поэтому вам нужно только вызвать это в окне верхнего уровня после добавления всех компонентов. –

+1

Возможно, было бы лучше дать «panel8» собственный класс, MySomethingPanel, и дать ему свои собственные компоненты. В стороне вы захотите изучить и использовать [Соглашения о присвоении имен Java] (http://en.wikipedia.org/wiki/Naming_convention_ (программирование) #Java). Имена переменных должны начинаться с нижней буквы, а имена классов - с буквой верхнего регистра. Также вам следует избегать использования имен тривиальных переменных, таких как 'Button1', если они не используются для тривиальных целей, таких как индекс цикла for. Вместо этого используйте имена, имеющие какое-то значение, чтобы ваш код стал комментировать. –

ответ

2

короткий ответ: нет, вы не можете этого сделать, это не так, как разработан API.

Вы можете создать служебный метод, который мог бы сделать это, хотя, возможно, что-то вроде ...

public JComponent addTo(JComponent parent, JComponent... children) { 
    if (children != null && children.length > 0) { 
     for (JComponent child : children) { 
      parent.add(child); 
     } 
    } 
    return parent; 
} 

, которые вы могли бы быть в состоянии использовать что-то вроде ...

addTo(Panel8, 
    GamulatorMain.Label4, 
    GamulatorMain.Panel4, 
    GamulatorMain.Button1, 
    GamulatorMain.Panel7).setVisible(true); 

как пример

+0

большое спасибо – Ekonion

+0

Это просто один подход, который не требует наследования для достижения – MadProgrammer

2

Некоторые наблюдения из вашего кода:

  1. Вы, кажется, доступа к глобальным, статические переменные, это не-не
  2. Ваши переменные начинаются с прописной, что нет нестандартное в Java
  3. Пожалуйста, не используйте номера для нескольких панелей (panel4, panel8, ...). Вместо того, чтобы назвать их в соответствии с тем, что они (например, buttonPanel, outputPanel ...)

Вместо этого, вы бы лучше создать собственный класс для Panel8 контейнера, например:

public class MyPanel extends Panel { 
    public MyPanel() { 
     //...instantiate label4 
     add(label4); 
     //...instantiate panel4 
     add(panel4); 
     //...instantiate button1 
     add(button1); 
     //...instantiate panel7 
     add(panel7); 
    } 
} 
+0

точно это моя проблема :( – Ekonion

+0

@Ekonion: нет, ваша проблема заключается в том, что ваш код должен быть полностью переработан и использовать принципы ООП. –

+0

@Ekonion: и хотя метод, связанный выше, может быть неправильным, другой пункты ниже находятся на месте. –

Смежные вопросы