[Java] Panel meerdere keren toevoegen aan andere panels

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • monnick
  • Registratie: December 2005
  • Niet online
Omdat een afbeelding meer zegt dan 1000 woorden, eerst een screenshot van mijn programmaatje:

Afbeeldingslocatie: http://www.tomrunia.nl/imgscript/img/fb82eba9.jpg

Het rood omlijnde gedeelte is een JPanel dat op drie andere JPanels gebruikt moet worden (zie eerste drie tabs). Mijn vraag is nu hoe ik dit het beste realiseer. Ik heb geprobeerd om in de hoofdklasse van mijn programma het panel te initialiseren en dan toe te voegen aan de drie panels, maar dat werkt niet.

Java:
1
2
3
// In de hoofdklasse (CellCounter_):
public static SelectChamberPanel pnlSelectChamber;
pnlSelectChamber = new SelectChamberPanel();

Java:
1
2
// In de drie tabbladen (panels):
this.add(CellCounter_.pnlSelectChamber);


Dit werkt dus niet, het pnlSelectChamber panel wordt alleen getoond voor het laatste panel waar ik de add() method aanroep.

Nu kan ik natuurlijk wel de volgende workaround gebruiken:

Java:
1
2
3
4
5
6
7
8
// In de hoofdklasse (CellCounter_):
public static SelectChamberPanel pnlSelectChamber1;
public static SelectChamberPanel pnlSelectChamber2;
public static SelectChamberPanel pnlSelectChamber3;

pnlSelectChamber1 = new SelectChamberPanel();
pnlSelectChamber2 = new SelectChamberPanel();
pnlSelectChamber3 = new SelectChamberPanel();


Java:
1
2
// In de drie tabbladen (panels):
this.add(CellCounter_.pnlSelectChamberX); // Waarbij X = 1, 2 of 3


Dit werkt wel, maar is natuurlijk een lelijke oplossing gezien er nu 3 dezelfde panels met dezelfde taak in het geheugen staan. Is er een andere (betere) manier om dit probleem op te lossen?

Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Nee, je zal het panel 3x moeten instantieren en toevoegen. Als er gedrag en waardes in je panel zitten die op alle 3 hetzelfde moeten zijn, dan moet je dat misschien splitsen naar een apart model dat door alle 3 panels gebruikt wordt en de panels alleen gebruiken als view op dat model.

Overigens kan je je afvragen of het nou een duidelijk interface ontwerp is om hetzelfde scherm element op het zelfde moment op 3 verschillende plaatsen te hebben.