In meinem Programm gibt es 10 Verbindungen in connectionList. Für jede Verbindung erstelle ich meine Frames neu. Es bedeutet, dass ich den gleichen Rahmen für 10 Mal erstellen. Ich möchte es nur einmal erstellen und 10 Mal verwenden, nicht für jede Verbindung erstellen. Ich kann es nicht entwerfen. Ich habe meinen Teil des Codes über create frame gesendet. Könntest du nur ein Beispiel unter ihnen für mich machen? Sollte ich Singleton Muster verwenden? Was ist der Lösungsweg und wie sollte es gemacht werden? Weil ich im echten Programm 25 Frames habe. Wenn du eine davon machst, kann ich andere 24 Frames machen. Mit freundlichen GrüßenWie erstellt man einen Rahmen und benutzt ihn überall und jederzeit?
Hauptklasse
for (String wn : connectionList) {
if (!workSpacesNames.contains(wn)) {
try {
DWorkspace workSpace = new DWorkspace(wn, DMainFrame.this);
workSpaces.add(workSpace);
tabbedPane.addTab(workSpace.getTitle(), workSpace.getHolderPanel());
workSpace.getDockingManager().setShowWorkspace(showWorkspaceArea);
workSpace.getDockingManager().beginLoadLayoutData();
if (UserAuthorization.getUserAuth().isAuthorized(CommandAuthType.CANCELEDORDERS_WINDOW)) {
workSpace.getDockingManager().addFrame(DFrameFactory.createClosedOrderTable(
workSpace, canceledOrderSound, DockContext.STATE_HIDDEN));
}
if (UserAuthorization.getUserAuth().isAuthorized(CommandAuthType.CANCELEDSTRATEGIES_WINDOW)) {
workSpace.getDockingManager().addFrame(DFrameFactory.createClosedStrategyTable(
workSpace, canceledStrategySound, DockContext.STATE_HIDDEN));
}
}
catch (Exception ex) {
log.trace("exception in DMainFrame", ex);
}
}
}
erstellen Frames Klasse
public class DFrameFactory {
private DFrameFactory() {
}
public static DockableFrame createClosedOrderTable(DWorkspace workspace,JCheckBoxMenuItem canceledOrderSound, int context) {
DockableFrame frame = new DockableFrame("closedorders");
frame.setTitle(ELanguage.getString("(LANG)org.neyre.dallar.frame.framefactory.closedorders.title"));
frame.setTabTitle(
ELanguage.getString("(LANG)org.neyre.dallar.frame.framefactory.closedorders.tabtitle"));
frame.setSideTitle(ELanguage.getString(
"(LANG)org.neyre.dallar.frame.framefactory.closedorders.sidetitle"));
frame.getContext().setInitMode(context);
frame.getContext().setInitSide(DockContext.DOCK_SIDE_SOUTH);
frame.getContext().setInitIndex(1);
frame.getContentPane().add(new DFClosedOrderTable(workspace, canceledOrderSound));
frame.setPreferredSize(new Dimension(750, 300));
frame.setDockedWidth(750);
frame.setFrameIcon(EIcons.getSmallIcon(EIcons.ERROR));
return frame;
}
public static DockableFrame createClosedStrategyTable(DWorkspace workspace,JCheckBoxMenuItem canceledStrategySound, int context) {
DockableFrame frame = new DockableFrame("closedstrategies");
frame.setTitle(ELanguage.getString("(LANG)org.neyre.dallar.frame.framefactory.closedstrategies.title"));
frame.setTabTitle(
ELanguage.getString("(LANG)org.neyre.dallar.frame.framefactory.closedstrategies.tabtitle"));
frame.setSideTitle(ELanguage.getString(
"(LANG)org.neyre.dallar.frame.framefactory.closedstrategies.sidetitle"));
frame.getContext().setInitMode(context);
frame.getContext().setInitSide(DockContext.DOCK_SIDE_SOUTH);
frame.getContext().setInitIndex(1);
frame.getContentPane().add(new DFClosedStrategyTable(workspace, canceledStrategySound));
frame.setPreferredSize(new Dimension(750, 300));
frame.setDockedWidth(750);
frame.setFrameIcon(EIcons.getSmallIcon(EIcons.ERROR));
return frame;
}
}
Was ist ein 'DockableFrame'? Macht nichts. Bessere Hilfe früher, poste ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) - das wird es erklären. –
DockableFrame ist eine abstrakte Klasse und erweitert JComponent. Möchten Sie den Code der DockableFrame-Klasse sehen? –
* "Möchten Sie sehen .." * Für bessere Hilfe eher .. Bitte lesen Sie beide Dokumente, bevor Sie Änderungen vornehmen. –