Hallo Zusammen,
ich benötige mal eure Hilfe beim erstellen des Layouts.
ich bekommes einfach nicht sauber hin. ich hab schon einiges versucht.
Ich möchte eigentlich nur links und rechts ein Panel mit einer festen breite und in der mitte soll sich das Panel vergrößern wenn ich auf Vollbild umschalte .
Das linke Panel ist soweit fertig und sollte doch eigentlich wenn ich im Übergeordenten Frame Borderlayout angebe und eine Feste Breite eintrage. Dort fest veranketer werden oder? Aber das Linke Panel geht über das Mittler Panel hinaus.
Villeicht könnt ihr mal drüber gucken was ich falsch mache.
ich benötige mal eure Hilfe beim erstellen des Layouts.
ich bekommes einfach nicht sauber hin. ich hab schon einiges versucht.
Ich möchte eigentlich nur links und rechts ein Panel mit einer festen breite und in der mitte soll sich das Panel vergrößern wenn ich auf Vollbild umschalte .
Das linke Panel ist soweit fertig und sollte doch eigentlich wenn ich im Übergeordenten Frame Borderlayout angebe und eine Feste Breite eintrage. Dort fest veranketer werden oder? Aber das Linke Panel geht über das Mittler Panel hinaus.
Villeicht könnt ihr mal drüber gucken was ich falsch mache.
Java:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.awt.BorderLayout;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import java.awt.Color;
import java.awt.Rectangle;
import java.awt.GridLayout;
import java.awt.Insets;
import javax.swing.GroupLayout.Alignment;
import java.awt.FlowLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
public class MainWindow extends JFrame {
private final JButton btnSchachtelLaden;
private final JLabel[] lblSchachtel = new JLabel[10];
private final JComboBox<String>[] cmbSchachtel = new JComboBox[10];
private final JButton btnSchachtelHinzufügen;
private final JButton btndelete;
private String path;
private String[] boxcardName;
private final Boolean showUUID = false;
JPanel pnlLeft = new JPanel();
JPanel pnlCenter = new JPanel();
JPanel pnlRight = new JPanel();
JPanel pnlTop = new JPanel();
JPanel pnlBottom =new JPanel();
private JMenuBar menuBar;
private windowLanguage wStrings = new windowLanguage();
public JPanel contentPane;
private int Schachtelanzahl = 1;
public static void main(String[] args) {
}
public MainWindow() {
setTitle("Test Programm");
setSize(1500, 900);
setLocationRelativeTo(null);
System.out.println("Programm wurde gestartet");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btnSchachtelHinzufügen = new JButton("Schachtel hinzufügen");
btnSchachtelLaden = new JButton("Datei laden");
lblSchachtel[0] = new JLabel("Schachtel Teil 1");
for (int i = 1; i<=9; i++) {
lblSchachtel[i] = new JLabel("Schachtel Teil " + (i+1));
cmbSchachtel[i] = new JComboBox<String>();
}
cmbSchachtel[0] = new JComboBox<String>();
cmbSchachtel[0].addItem("Kein Verzeichnis ausgewählt");
btndelete = new JButton();
btndelete.setMargin(new Insets(0, 0, 0, 0));
btndelete.setIcon(new ImageIcon("Z://Eclipse_workspace//Boxdrawer_Plan//Font test//src//res//Images//delet.png"));
getContentPane().setLayout(new BorderLayout(0, 0));
getContentPane().add(pnlTop, BorderLayout.NORTH);
pnlTop.setBorder(new LineBorder(new Color(0, 0, 0)));
getContentPane().add(pnlBottom, BorderLayout.SOUTH);
pnlBottom.setBorder(new LineBorder(new Color(0, 0, 0)));
getContentPane().add(pnlRight,BorderLayout.EAST);
pnlRight.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, new Color(255, 255, 255), new Color(160, 160, 160)), "Voransicht", TitledBorder.LEADING, TitledBorder.BELOW_TOP, null, new Color(255, 0, 0)));
getContentPane().add(pnlLeft, BorderLayout.WEST);
pnlLeft.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 0)), "TEST", TitledBorder.LEADING, TitledBorder.BELOW_TOP, null, new Color(0, 0, 0)));
getContentPane().add(pnlCenter,BorderLayout.CENTER);
pnlCenter.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 0), 2), "Schachteleditor", TitledBorder.LEADING, TitledBorder.BELOW_TOP, null, new Color(0, 0, 0)));
pnlLeft.setSize(new Dimension(460, 200));
pnlLeft.setLocation(new Point(15, 20));
// pnlLeft.setBounds(new Rectangle(10, 5, 460, 800));
getContentPane().add(pnlLeft);
pnlCenter.setPreferredSize(new Dimension(200, 800));
pnlCenter.setSize(new Dimension(200, 800));
pnlCenter.setLocation(new Point(465, 10));
pnlCenter.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
pnlRight.setLocation(new Point(700, 10));
pnlRight.setSize(new Dimension(260, 800));
pnlRight.setBounds(new Rectangle(1270, 5, 192, 844));
pnlRight.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
btnSchachtelLaden.setBounds(10, 21, 400, 36);
lblSchachtel[0].setBounds(10, 55, 400, 36);
cmbSchachtel[0].setBounds(10, 83, 400, 36);
btnSchachtelHinzufügen.setBounds(10, 130, 400, 36);
btndelete.setBounds(415, 83, 36, 36);
pnlLeft.setLayout(null);
pnlLeft.add(btnSchachtelLaden);
pnlLeft.add(lblSchachtel[0]);
pnlLeft.add(cmbSchachtel[0]);
// pnlLeft.add(btndelete);
pnlLeft.add(btnSchachtelHinzufügen);
//MenuBar aus Boxdrawer ohne Funktionen
menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnDatei = new JMenu(wStrings.getsDatei());
menuBar.add(mnDatei);
JMenuItem mntmSpeichern = new JMenuItem("Speichern");
mntmSpeichern.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
mnDatei.add(mntmSpeichern);
JMenuItem mntmLaden = new JMenuItem("Laden");
mnDatei.add(mntmLaden);
JMenuItem mntmNeu = new JMenuItem("Neue Zeichnung");
mnDatei.add(mntmNeu);
JMenuItem mntmBoxErstellen = new JMenuItem("Export Boxcard");
menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnAnzeige = new JMenu("Info");
menuBar.add(mnAnzeige);
JMenuItem mntmVersionsInfo = new JMenuItem("Versions Info");
btnSchachtelHinzufügen.addActionListener(this::schachtelHinzufuegenAction);
btnSchachtelLaden.addActionListener(this::schachtelLadenAction);
btndelete.addActionListener(this::deleteSchachel);
setVisible(true);
}
//*************************Methoden****************************************
//Array löschen
public static void deleteArray(String[] del) {
for (int i = 0; i < del.length; i++)
del[i] = null;
}
//Schachtelpfad auswählen und einträge in Combobox schreiben
public String[] schachtelEinlesen(String path, String filter, JComboBox<String> cmb, Boolean uuid) {
File f = new File(path);
File[] l = f.listFiles();
String[] array = new String[l.length + 1];
int y = 1;
array[0] = "keine Schachtel ausgewählt";
cmb.addItem(array[0]);
for (int i = 1; i < l.length; i++) {
if (l[i].getName().contains(filter)) {
if (uuid == true) {
array[y] = l[i].getName();
System.out.println(array[y]);
cmb.addItem(array[y]);
y++;
} else {
array[y] = l[i].getName();
array[y] = zerschnippel(array[y], ".");
cmb.addItem(array[y]);
y++;
}
}
}
return array;
}
//String zerlegen
public String zerschnippel(String param, String lookAt) {
return param.substring(0, param.indexOf(lookAt));
}
//********************Methoden für Actions****************************
/* public void testOutputAction(ActionEvent e) {
System.out.println(e.getSource());
if (e.getSource() == this.cmbSchachtel[0]) {
System.out.println("geht doch");
} else if (e.getSource() == this.cmbSchachtel[1]) {
System.out.println("geht doch1");
}
}
*/
public void schachtelHinzufuegenAction(ActionEvent e1) {
if (Schachtelanzahl < lblSchachtel.length - 1) {
lblSchachtel[Schachtelanzahl].setVisible(true);
lblSchachtel[Schachtelanzahl].setBounds(10, (55 + (Schachtelanzahl) * 60), (400), 30);
pnlLeft.add(lblSchachtel[Schachtelanzahl]);
try //Fehlerabfangen wenn noch keine Datei geladen wurde
{
boxcardName = schachtelEinlesen(path, ".boxcard", cmbSchachtel[Schachtelanzahl], showUUID);
} catch (Exception e4) {
cmbSchachtel[Schachtelanzahl].addItem("Kein Verzeichnis ausgewählt");
}
cmbSchachtel[Schachtelanzahl].setBounds(10, (83 + (Schachtelanzahl) * 60), 400, 36);
cmbSchachtel[Schachtelanzahl].addActionListener(this::printSelectedItem);
pnlLeft.add(cmbSchachtel[Schachtelanzahl]);
btndelete.setLocation(415, (83 + (Schachtelanzahl) * 60));
pnlLeft.add(btndelete);
btnSchachtelHinzufügen.setLocation(10, (130 + (Schachtelanzahl) * 60));
btndelete.setEnabled(true);
//frame neu generieren
getContentPane().validate();
getContentPane().repaint();
Schachtelanzahl++;
if (Schachtelanzahl == lblSchachtel.length - 1) {
btnSchachtelHinzufügen.setEnabled(false);
}
}
}
public void schachtelLadenAction(ActionEvent e2) {
// Dateiverzeichnis auswählen
JFileChooser Filesys = new JFileChooser(new File("Z:\\boxdb_test\\boxpara\\"));
Filesys.setMultiSelectionEnabled(true);
Filesys.setDialogTitle("Verzeichnis Laden");
System.out.println("Geöffnet");
Filesys.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = Filesys.showOpenDialog(null);
//Beginn Fehlerabfrage
if (returnVal == JFileChooser.APPROVE_OPTION) {
File[] file = Filesys.getSelectedFiles();
// Build array
System.out.println(file.length);
path = file[0].getPath();
System.out.println(path);
for (int i = 0; i < Schachtelanzahl; i++) {
cmbSchachtel[i].removeAllItems();
boxcardName = schachtelEinlesen(path, ".boxcard", cmbSchachtel[i], showUUID);
}
// System.out.println(boxcardName[81]);
System.out.println("Dialog geöffnet");
} else if (returnVal == JFileChooser.CANCEL_OPTION) {
} else if (returnVal == JFileChooser.ERROR_OPTION) {
}
}
public void deleteSchachel(ActionEvent e)
{
Schachtelanzahl--;
//btndelete.setEnabled(true);
pnlLeft.remove(cmbSchachtel[Schachtelanzahl]);
pnlLeft.remove(lblSchachtel[Schachtelanzahl]);
btndelete.setLocation(415, (83 + (Schachtelanzahl-1) * 60));
pnlLeft.add(btndelete);
btnSchachtelHinzufügen.setLocation(10, (130 + (Schachtelanzahl-1) * 60));
getContentPane().validate();
getContentPane().repaint();
System.out.println(Schachtelanzahl);
if (Schachtelanzahl <= lblSchachtel.length - 1)
{
btnSchachtelHinzufügen.setEnabled(true);
}
if (Schachtelanzahl == 1)
{
btndelete.setEnabled(false);
}
}
public void printSelectedItem(ActionEvent e) {
if (e.getSource() instanceof JComboBox) {
JComboBox<String> comboBox = (JComboBox) e.getSource();
System.out.println(comboBox.getSelectedItem());
}
}
}