2016-08-21 4 views
0

Я создал рамку с почти 20 панелями внутри (все с разным видом и характеристиками), просто создавая их и добавляя их в панель контента и запоминая номер своего заказа для доступа к ним.Должны ли панели быть полями внутри рамки?

Но теперь я пытаюсь создать диаграмму UML из исходного кода, и я заметил, что у меня нет ссылки на эти панели внутри фрейма. Должен ли я создавать 20 полевых панелей и ссылаться на них один за другим? Или это нормально? Я не знаю правильного пути, спасибо!

P.S: Я не знаю, если это имеет значение, но мой язык Java

ответ

0

, как вы пишете о ваших панелях (все с различными видами и характеристиками) Я подозреваю, что эти панели также имеют разные классы.

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

((MyPanelType1) getContentPane().getComponent(0)).someMethod(); 

, тогда как с полями для каждой панели

private MyPanelType1 firstPanel; 

код будет выглядеть

firstPanel.someMethod(); 

Теперь решить, код легче читать и принимать соответствующие решения.

+0

Да, и разные атрибуты тоже, так что, возможно, это не лучший выбор для создания полей для них. Я только хотел узнать, может ли мой путь хуже, но я вижу, что это не так. Благодаря! – paxinco

0

Вы можете хранить панели в JPanel [] массив, так что вы можете вызвать их в любое время.

import java.awt.Color; 

import javax.swing.BorderFactory; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 


public class TestClass { 
    static JFrame frame = new JFrame(); 
    static JPanel[] panel_order = new JPanel[20]; // 20 the number of panels you have 

//generating the panels 
public static void main(String[] args){  
    frame.setBounds(0, 0, 500, 400); 

    for(int i=0;i<panel_order.length;i++){ 
     JPanel panel = new JPanel(); 
     // you can set the panel's location like: 
     panel.setBounds(20*i, 0, 80, 50); 
     //and border if you are making diagrams 
     panel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); 
     panel_order[i] = panel; 
     frame.add(panel); 
    } 
frame.setVisible(true); 
    //now you can access your panels by calling panel_order[panel_number]; 
     //example display the 5th panel's location 
     System.out.println(panel_order[5].getLocation()); 
    } 
} 
+0

Спасибо! Но я знал, что могу, мой вопрос, если это более правильно назначено для полей или это неразумно, когда вы создаете диаграммы UML и dessign? – paxinco

+0

Легче их не назначать. Он будет работать каждый путь. Вы можете сделать это, как хотите. – user6740407