Hi Leute,
da ich für die Uni bis Ende nächstes Semester ein Programm(Graphentheorie) mit GUI programmieren müssen und wir GUI's bis jetzt noch gelernt haben habe ich vorgestern beschlossen mir Swing mal selbst näher zu bringen... Läuft bis jetzt nicht so schlecht und macht Spaß
Zumindest kann ich meine Matritzen so darstellen wie ich es mir vorstelle(Naja Größe werde ich noch anpassen).
Ich habe nun ein Problem bei mehreren JPanels in einem Frame.
Ich verwende für die Darstellung der Komponenten den LayoutManager GridBagLayout.
Die Matritzen erstelle ich in einem JPanel(JToggleButtons in einem GridLayout) und positioniere eine Links Oben im Eck(FIRST_LINE_START) , die Zweite in der Mitte(PAGE_START) und die dritte rechts oben im Eck(FIRST_LINE_END).
Für die Ausgabe diverser Berechnungen habe ich unten(PAGE_END / Horizontal(damit sie sich über die ganze Breite streckt) noch eine JTextArea.
Mein Problem nun. Wenn ich das Fenster verkleinere, werden die Matritzen in der Mitte und die rechts oben im Eck unter die Matritze im linken oberen Eck geschoben. Dies würde ich gerne verhindern.
Die JTextArea verschiebt sich über die Matritzen wenn ich das Fenster nach obenhin verkleinere.
Siehe Screenshots...
Habe zwar googel gefragt aber nicht annähernd einen Lösungsansatz gefunden. Evtl. sollte ich das auch noch lernen ;-)
Wäre super wenn ihr mir helfen könnt wie ich das Problem löse(Keine ganze Lösung sondern einen Ansatz oder wonach ich googeln soll ;-) )
Anbei der Code der Methode in der ich das Layout zusammenbastle und ein paar Screenshots:
Danke schon Mal!
Ps1: Screenshots muss ich erst online laden, kommen gleich
Ps2: Gerne auch Kritik zur Struktur des Codes gewünscht(Da fehlts mir noch bisschen an sinvollem und "schönem" aufbau ;-)
da ich für die Uni bis Ende nächstes Semester ein Programm(Graphentheorie) mit GUI programmieren müssen und wir GUI's bis jetzt noch gelernt haben habe ich vorgestern beschlossen mir Swing mal selbst näher zu bringen... Läuft bis jetzt nicht so schlecht und macht Spaß
Ich habe nun ein Problem bei mehreren JPanels in einem Frame.
Ich verwende für die Darstellung der Komponenten den LayoutManager GridBagLayout.
Die Matritzen erstelle ich in einem JPanel(JToggleButtons in einem GridLayout) und positioniere eine Links Oben im Eck(FIRST_LINE_START) , die Zweite in der Mitte(PAGE_START) und die dritte rechts oben im Eck(FIRST_LINE_END).
Für die Ausgabe diverser Berechnungen habe ich unten(PAGE_END / Horizontal(damit sie sich über die ganze Breite streckt) noch eine JTextArea.
Mein Problem nun. Wenn ich das Fenster verkleinere, werden die Matritzen in der Mitte und die rechts oben im Eck unter die Matritze im linken oberen Eck geschoben. Dies würde ich gerne verhindern.
Die JTextArea verschiebt sich über die Matritzen wenn ich das Fenster nach obenhin verkleinere.
Siehe Screenshots...
Habe zwar googel gefragt aber nicht annähernd einen Lösungsansatz gefunden. Evtl. sollte ich das auch noch lernen ;-)
Wäre super wenn ihr mir helfen könnt wie ich das Problem löse(Keine ganze Lösung sondern einen Ansatz oder wonach ich googeln soll ;-) )
Anbei der Code der Methode in der ich das Layout zusammenbastle und ein paar Screenshots:
Danke schon Mal!
Ps1: Screenshots muss ich erst online laden, kommen gleich
Ps2: Gerne auch Kritik zur Struktur des Codes gewünscht(Da fehlts mir noch bisschen an sinvollem und "schönem" aufbau ;-)
Code:
public void init(int dimension, int[][] array) {
JFrame frame = new JFrame("Graph Program v.0.1.2");
menubar = new JMenuBar();
menu= new JMenu("Menü");
menubar.add(menu);
frame.setJMenuBar(menubar);
GridBagConstraints c = new GridBagConstraints();
frame.getContentPane().setLayout(new GridBagLayout());
//Größe des Frames berechnen und festlegen
t = Toolkit.getDefaultToolkit();
Dimension d = t.getScreenSize();
int height = (int) d.getHeight()-30;
int width = (int) d.getWidth();
frame.setSize(width, height);
//Init Container und panel für Adjazenzmatrix erstellen
inhalt = frame.getContentPane();
inhalt.setBackground(Color.DARK_GRAY);
// Panel, adjazenzmatrix dem Container hinzufügen und positionieren
JPanel p = new JPanel();
p = createGridPanelAdjazenzmatrice(dimension, array);
c.anchor = GridBagConstraints.FIRST_LINE_START;
c.gridx = 0;
c.gridy = 0;
c.weightx = 1;
c.weighty = 1;
inhalt.add(p, c);
//Panel, wegmatrix dem Container hinzufuegen und positionieren
JPanel p2 = new JPanel();
p2 = createGridPanelWaymatrice(dimension, array);
c.anchor = GridBagConstraints.PAGE_START;
c.gridx = 0;
c.gridy = 0;
c.weightx = 1;
c.weighty = 1;
inhalt.add(p2, c);
JPanel p3 = new JPanel();
p3 = createGridPanelDistancematrix(dimension, array);
c.anchor = GridBagConstraints.FIRST_LINE_END;
c.gridx = 0;
c.gridy = 0;
c.weightx = 1;
c.weighty = 1;
inhalt.add(p3, c);
//TextFenster erstellen und einbinden
JPanel p4 = new JPanel();
p4.setLayout(new BorderLayout());
c.gridwidth = GridBagConstraints.RELATIVE;
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 5;
c.weightx = 0;
c.weighty = 0;
c.ipady = 500;
textWindow = new JTextArea();
textWindow.setBorder(new LineBorder(Color.GREEN));
scrollpane = new JScrollPane(textWindow);
scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
p4.add(scrollpane,BorderLayout.CENTER);
inhalt.add(p4,c);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}


