Hi Leute,
also eigentlich hatte ich gedacht, dass ich das GridBagLayout nun verstanden hätte bzw. unter Kontrolle habe. Falsch gedacht. Ich will mal versuchen wo das Problem liegt und dass ihr dann vielleicht diese Sinnlosigkeit an Fehler gelöst bekommt. Vielleicht bin ich wirklich total blind oder Java baut hier verdammt großen Mist, was ich eigentlich nicht glauben kann. Naja das Prblem bezieht sich lauder auf einen Großen Abschnitt an Quellcode. Ich werd mal erst eine Klasse reinstellen, vlt. reichts ja schon. Der nachfolgende Quellcode bildet mir sone Art Programmexplorer. Dieser wird auch vernünftig aufgebaut so wie ich es mir vorstelle. Diesen Explorer bette ich in ein Hauptpanel ein. Werde hier auch noch Bilder reinstellen. Problem ist hier die Methode this.buildListe(); die ich dafür nutze eine JList mit Werten zu füllen. Aktiviere ich diese Methode werden auf einmal im Hauptpanelbereiche überlappt oder ausgeblendet. Deaktiviere ich diese Methode bleibt die JList natürlich leer, aber dafür wird alles einwandfrei dargestellt. Für mich erscheint das dahingehend sinnlos da ja
1. Die Layoutmanager sich ja eigentlich garnicht gegenseitig beeinflussen dürften.
2. Wieso das befüllen des DefaultListModel die Layoutmanager beeinflusst
ich hoffe das Problem wird einigemaßen klar geschildert und euch fällt eine lösung ein. Hat vielleicht schon mal jemand ähnliche Probleme mit mehreren GridBagLayouts auf verschiedenen Ebenen gehabt?
Hauptpanel fehlerfrei dargestellt. Element rot dargestellt welche durch aktivierte Methode verschwinden:
Hauptpanel mit ausgeblendeten Elementen:
ProgrammExporer:
Gruß Jan
also eigentlich hatte ich gedacht, dass ich das GridBagLayout nun verstanden hätte bzw. unter Kontrolle habe. Falsch gedacht. Ich will mal versuchen wo das Problem liegt und dass ihr dann vielleicht diese Sinnlosigkeit an Fehler gelöst bekommt. Vielleicht bin ich wirklich total blind oder Java baut hier verdammt großen Mist, was ich eigentlich nicht glauben kann. Naja das Prblem bezieht sich lauder auf einen Großen Abschnitt an Quellcode. Ich werd mal erst eine Klasse reinstellen, vlt. reichts ja schon. Der nachfolgende Quellcode bildet mir sone Art Programmexplorer. Dieser wird auch vernünftig aufgebaut so wie ich es mir vorstelle. Diesen Explorer bette ich in ein Hauptpanel ein. Werde hier auch noch Bilder reinstellen. Problem ist hier die Methode this.buildListe(); die ich dafür nutze eine JList mit Werten zu füllen. Aktiviere ich diese Methode werden auf einmal im Hauptpanelbereiche überlappt oder ausgeblendet. Deaktiviere ich diese Methode bleibt die JList natürlich leer, aber dafür wird alles einwandfrei dargestellt. Für mich erscheint das dahingehend sinnlos da ja
1. Die Layoutmanager sich ja eigentlich garnicht gegenseitig beeinflussen dürften.
2. Wieso das befüllen des DefaultListModel die Layoutmanager beeinflusst
ich hoffe das Problem wird einigemaßen klar geschildert und euch fällt eine lösung ein. Hat vielleicht schon mal jemand ähnliche Probleme mit mehreren GridBagLayouts auf verschiedenen Ebenen gehabt?
Hauptpanel fehlerfrei dargestellt. Element rot dargestellt welche durch aktivierte Methode verschwinden:
Hauptpanel mit ausgeblendeten Elementen:
ProgrammExporer:
Java:
public class EDExplorerPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JTabbedPane tabbedPaneExplorer = null;
private JPanel panelProgramme = null;
private JPanel panelMeldungen = null;
private JPanel panelVerlauf = null;
private EDExplorerTrenner trennerAnwendungFavoriten;
private JList listAnwendungFavoriten;
private JScrollPane scrollPaneAnwendungFavoriten;
private EDExplorerTrenner trennerFavoriten;
private DefaultListModel listModelFavoriten;
private JList listFavoriten;
private JScrollPane scrollPaneFavoriten;
private EDExplorerTrenner trennerBenutzermenue;
private DefaultListModel listModelBenutzermenue;
private JList listBenutzermenue;
private JScrollPane scrollPaneBenutzermenue;
private Vector<Color> colors;
private Map<Object, Icon> icons;
public EDExplorerPanel(Vector<Color> colors) {
super();
this.colors = colors;
this.setLayout(new GridBagLayout());
this.setMinimumSize(new Dimension(100, 100));
this.setBackground(this.colors.get(3));
this.icons = new HashMap<Object, Icon>();
initialize();
this.buildListe();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
panelProgramme = new JPanel();
panelProgramme.setLayout(new GridBagLayout());
panelVerlauf = new JPanel();
panelVerlauf.setLayout(new GridBagLayout());
panelMeldungen = new JPanel();
panelMeldungen.setLayout(new GridBagLayout());
tabbedPaneExplorer = new JTabbedPane();
tabbedPaneExplorer.addTab(null, IconLoader.loadIcon(IconLoader.ICON_PROGRAMME, 25, 25),
panelProgramme, "Programme");
tabbedPaneExplorer.addTab(null, IconLoader.loadIcon(IconLoader.ICON_VERLAUF, 25, 25),
panelVerlauf, "Verlauf");
tabbedPaneExplorer.addTab(null, IconLoader.loadIcon(IconLoader.ICON_MELDUNGEN, 25, 25),
panelMeldungen, "Meldungen");
trennerAnwendungFavoriten = new EDExplorerTrenner("Anwendungsbezogene Favoriten",
this.colors.get(3));
trennerAnwendungFavoriten.getButtonMinimieren().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (trennerAnwendungFavoriten.getButtonMinimieren().isSelected()) {
scrollPaneAnwendungFavoriten.setVisible(false);
revalidate();
} else {
scrollPaneAnwendungFavoriten.setVisible(true);
revalidate();
}
}
});
listAnwendungFavoriten = new JList();
listAnwendungFavoriten.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listAnwendungFavoriten.setBackground(this.colors.get(4));
listAnwendungFavoriten.setDragEnabled(true);
scrollPaneAnwendungFavoriten = new JScrollPane();
scrollPaneAnwendungFavoriten.setViewportView(listAnwendungFavoriten);
trennerFavoriten = new EDExplorerTrenner("Favoriten", this.colors.get(3));
trennerFavoriten.getButtonMinimieren().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (trennerFavoriten.getButtonMinimieren().isSelected()) {
scrollPaneFavoriten.setVisible(false);
revalidate();
} else {
scrollPaneFavoriten.setVisible(true);
revalidate();
}
}
});
listModelFavoriten = new DefaultListModel();
listFavoriten = new JList(listModelFavoriten);
listFavoriten.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listFavoriten.setCellRenderer(new IconListRenderer(icons));
listFavoriten.setBackground(this.colors.get(4));
scrollPaneFavoriten = new JScrollPane();
scrollPaneFavoriten.setViewportView(listFavoriten);
DropTarget dropTarget = new DropTarget(listFavoriten, new DropTargetAdapter() {
public void drop(DropTargetDropEvent dtde) {
try {
Transferable tr = dtde.getTransferable();
if (tr.isDataFlavorSupported(DataFlavor.stringFlavor)) {
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
String data = (String) tr.getTransferData(DataFlavor.stringFlavor);
// Sind in der Quelliste mehrere Elemente ausgewählt, so
// werden diese in
// einem String übertragen. Trennzeichen ist dann der
// Zeilenvorschub.
StringTokenizer tokens = new StringTokenizer(data, "\n");
while (tokens.hasMoreTokens()) {
listModelFavoriten.addElement(tokens.nextToken());
}
listAnwendungFavoriten.updateUI();
dtde.getDropTargetContext().dropComplete(true);
} else {
System.err.println("DataFlavor.stringFlavor is not supported, rejected");
dtde.rejectDrop();
}
} catch (IOException ex) {
} catch (UnsupportedFlavorException ex) {
System.err.println("UnsupportedFlavorException");
ex.printStackTrace();
dtde.rejectDrop();
}
}
});
trennerBenutzermenue = new EDExplorerTrenner("Benutzermenü", this.colors.get(3));
trennerBenutzermenue.getButtonMinimieren().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (trennerBenutzermenue.getButtonMinimieren().isSelected()) {
scrollPaneBenutzermenue.setVisible(false);
revalidate();
} else {
scrollPaneBenutzermenue.setVisible(true);
revalidate();
}
}
});
listModelBenutzermenue = new DefaultListModel();
listBenutzermenue = new JList(this.listModelBenutzermenue);
listBenutzermenue.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listBenutzermenue.setCellRenderer(new IconListRenderer(icons));
listBenutzermenue.setBackground(this.colors.get(4));
listBenutzermenue.setDragEnabled(true);
scrollPaneBenutzermenue = new JScrollPane();
scrollPaneBenutzermenue.setViewportView(listBenutzermenue);
this.addComponent(this, tabbedPaneExplorer, GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST, new Insets(0, 0, 0, 0), 0, 0, 1, 1, 1, 1);
this.addComponent(panelProgramme, trennerAnwendungFavoriten, GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST, new Insets(0, 0, 0, 0), 0, 0, 1, 1, 1, 0);
this.addComponent(panelProgramme, scrollPaneAnwendungFavoriten, GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST, new Insets(0, 0, 0, 0), 0, 1, 1, 1, 1, 1);
this.addComponent(panelProgramme, trennerFavoriten, GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST, new Insets(0, 0, 0, 0), 0, 2, 1, 1, 1, 0);
this.addComponent(panelProgramme, scrollPaneFavoriten, GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST, new Insets(0, 0, 0, 0), 0, 3, 1, 1, 1, 1);
this.addComponent(panelProgramme, trennerBenutzermenue, GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST, new Insets(0, 0, 0, 0), 0, 4, 1, 1, 1, 0);
this.addComponent(panelProgramme, scrollPaneBenutzermenue, GridBagConstraints.BOTH,
GridBagConstraints.NORTHWEST, new Insets(0, 0, 0, 0), 0, 5, 1, 1, 1, 1);
}
private void buildListe() {
listModelBenutzermenue.addElement("Erfassung");
icons.put("Erfassung", IconLoader.loadIcon(IconLoader.ICON_ERFASSUNG, 25, 25));
}
private void addComponent(Container container, Component component, int fill, int anchor,
Insets insets, int x, int y, int width, int height, double weightx, double weighty) {
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = fill;
constraints.anchor = anchor;
constraints.insets = insets;
constraints.gridx = x;
constraints.gridy = y;
constraints.gridwidth = width;
constraints.gridheight = height;
constraints.weightx = weightx;
constraints.weighty = weighty;
container.add(component, constraints);
}
public JList getListBenutzermenue() {
return listBenutzermenue;
}
}
Gruß Jan