Hallo zusammen,
ich habe hier einen Dialog (JFrame) der mittels FormLayout aufgebaut ist. Allerdings habe ich noch Probleme mit dem dynamischen Wachsen von Komponenten. Ich hoffe mir kann hier jemand dazu weiter helfen.
Ein paar Eckdaten, wie der JFrame letztendlich aussehen soll:
Beim Aufruf wird eine Initialgröße gesetzt (das funktioniert bisher auch).
Oben ist immer ein Header JPanel mit ein paar Labels und Bildern (funktioniert auch).
Unten ist immer ein Footer JPanel mit OK- und Abbrechen-Button (funktioniert auch).
In der Mitte soll jetzt ein JPanel hin, das eine Initialgröße von 50 DialogUnits hat, aber automatisch größer und kleiner wird (bis zum Minimal-Wert, darunter soll ein Scrollbalken angezeigt werden).
Das Mittlere JPanel enthält ein JTabbedPane, da dort noch mehrere Tabs vorhanden sind. Jeder Tab hat dann wieder ein eigenes JPanel, darauf einen JScrollPane und darin ist dann letztendlich der Content.
Welche Anweisungen muss ich da wo setzen, damit das funktioniert wie gewünscht?
Bisher wächst das Content Panel bei mir leider noch nicht dynamisch...
Ich habe dazu zum besseren Verständnis mal ein Mockup erstellt: Klick
Und hier noch, was bisher so da ist. Ich schreibe die Klassenvariablen nicht dazu, da sie eigentlich selbsterklärend sind.
Ich hoffe mir kann da jemand weiter helfen.
Danke schonmal!
ich habe hier einen Dialog (JFrame) der mittels FormLayout aufgebaut ist. Allerdings habe ich noch Probleme mit dem dynamischen Wachsen von Komponenten. Ich hoffe mir kann hier jemand dazu weiter helfen.
Ein paar Eckdaten, wie der JFrame letztendlich aussehen soll:
Beim Aufruf wird eine Initialgröße gesetzt (das funktioniert bisher auch).
Oben ist immer ein Header JPanel mit ein paar Labels und Bildern (funktioniert auch).
Unten ist immer ein Footer JPanel mit OK- und Abbrechen-Button (funktioniert auch).
In der Mitte soll jetzt ein JPanel hin, das eine Initialgröße von 50 DialogUnits hat, aber automatisch größer und kleiner wird (bis zum Minimal-Wert, darunter soll ein Scrollbalken angezeigt werden).
Das Mittlere JPanel enthält ein JTabbedPane, da dort noch mehrere Tabs vorhanden sind. Jeder Tab hat dann wieder ein eigenes JPanel, darauf einen JScrollPane und darin ist dann letztendlich der Content.
Welche Anweisungen muss ich da wo setzen, damit das funktioniert wie gewünscht?
Bisher wächst das Content Panel bei mir leider noch nicht dynamisch...
Ich habe dazu zum besseren Verständnis mal ein Mockup erstellt: Klick
Und hier noch, was bisher so da ist. Ich schreibe die Klassenvariablen nicht dazu, da sie eigentlich selbsterklärend sind.
Java:
public abstract class AbstractPnlBasicEdit extends JPanel
protected void initComponents() throws CouldNotResolvException {
this.subPanelFactory = new SubPanelFactory(this.bundle, this.bindingConfiguration, this.functionAnnotationList);
this.tabbedPane = new JTabbedPane();
// ======== tabbedPane ========
this.buildFunctionTab();
FormLayout formLayout = new FormLayout("$default_grow", "max(50dlu;pref)");
this.setLayout(formLayout);
this.add(this.tabbedPane, CC.xy(1, 1, CC.FILL, CC.FILL));
}
protected void buildFunctionTab() throws CouldNotResolvException {
this.tabbedPane.setTabPlacement(SwingConstants.BOTTOM);
// ======== functionTAB ========
{
subPanelFactory.addSubPanels(this.entity, this.formLayoutBuilder);
}
JPanel functionTab = this.formLayoutBuilder.getFunctionTabPnl();
JScrollPane scrollPane = new JScrollPane(functionTab);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
this.tabbedPane.addTab(this.dialogAnnotation.dialogTitel(), scrollPane);
}
}
Java:
public class BasicContainerPnlEdit extends JPanel implements {
private void initComponents(JPanel singleEditPnl) throws CouldNotResolvException {
ResourceBundle bundle = ResourceBundle.getBundle("de_dialogs");
createBasicComps(bundle); // Hier wird das JPanel mit dem OK- und Abbrechen-Button erzeugt
createCountryTabs(singleEditPnl); // Hier wird das JTabbedPane erzeugt
// ======== dialogPane ========
buildDialogPane(bundle);
// ======== this ========
FormLayout formLayout = new FormLayout("$default_grow", "top:$default_grow, bottom:$default");
this.setLayout(formLayout);
this.add(contentPanelBuilder.getPanel(), CC.xy(1, 1, CC.FILL, CC.FILL));
this.add(basicComps.getButtonBarPNL(), CC.xy(1, 2, CC.FILL, CC.BOTTOM));
}
private void buildDialogPane(ResourceBundle bundle) throws CouldNotResolvException {
// ======== contentPanel ========
{
buildStdContentPanel(bundle);
contentPanelBuilder.appendRow("pref:grow");
contentPanelBuilder.nextLine();
contentPanelBuilder.add(countryTabbedPane);
}
}
protected void buildStdContentPanel(ResourceBundle bundle) throws CouldNotResolvException {
DialogAnnotation dialogAnno = AnnotationUtils.checkEntityDialogAnnotationClass(getSingleEntity());
SubPnlHeader headerPnl = new SubPnlHeader(bundle, dialogAnno, this.basicComps.getValidationResultLBL());
contentPanelBuilder.appendRow("pref:none");
contentPanelBuilder.add(headerPnl.getHeaderPNL());
if (getSingleEntity() instanceof IEditInfoBeans) {
this.pnlEditInfo = new SubPnlEditInfo(bundle, getSingleEntity(), dialogAnno);
contentPanelBuilder.appendRow("pref:none");
contentPanelBuilder.nextLine();
contentPanelBuilder.add(this.pnlEditInfo.getInformationPNLscrl());
} else if (getSingleEntity() instanceof IExtendedInfoBeans) {
this.pnlEditInfo = new SubPnlEditInfoExt(bundle, getSingleEntity(), dialogAnno);
contentPanelBuilder.appendRow("pref:none");
contentPanelBuilder.nextLine();
contentPanelBuilder.add(this.pnlEditInfo.getInformationPNLscrl());
}
}
}
Ich hoffe mir kann da jemand weiter helfen.
Danke schonmal!
Zuletzt bearbeitet: