G
Guest
Gast
Hallo,
ich habe folgendes Porblem:
In meinem JTabbedPane gibt es einen Tab der eine Tabelle enthält und "zufällig" das tut was ich ihm sage. Die Tabelle wird über das ganze TabbedPane angezeigt so wie es sein soll
In den weiteren JTabbedPane soll es eine Möglichkeit geben in der Tabelle zu suchen. Suche funktioniert auch und alles super. Nur das Layout lässt sehr zu wünschen über. Mein JTabbedPane hat einfach alles zentiert was ich anzeige . Ich wollte es eigendlich alles links in einer Spalte haben. Ich versuche es hier mit einem GridBagLayout. Das erscheint mir am sinnvollsten, da die Eingabefelder unterschiedlich groß werden sollen. Nach einer Suche soll neben den Textfeldern die Suchergebnisse angezeigt werden. Deshalb brauche ich dort ausreichend Platz.
Hier ein bischen von meinem Quelltext.
search ist ein JPanel und das Textfeld ein JTextField. beides sind Klassenvariablen.
Hoffe das mir jemand weiter helfen kann. ich suche schon seit Stunden nach einer Lösung
ich habe folgendes Porblem:
In meinem JTabbedPane gibt es einen Tab der eine Tabelle enthält und "zufällig" das tut was ich ihm sage. Die Tabelle wird über das ganze TabbedPane angezeigt so wie es sein soll
In den weiteren JTabbedPane soll es eine Möglichkeit geben in der Tabelle zu suchen. Suche funktioniert auch und alles super. Nur das Layout lässt sehr zu wünschen über. Mein JTabbedPane hat einfach alles zentiert was ich anzeige . Ich wollte es eigendlich alles links in einer Spalte haben. Ich versuche es hier mit einem GridBagLayout. Das erscheint mir am sinnvollsten, da die Eingabefelder unterschiedlich groß werden sollen. Nach einer Suche soll neben den Textfeldern die Suchergebnisse angezeigt werden. Deshalb brauche ich dort ausreichend Platz.
Hier ein bischen von meinem Quelltext.
search ist ein JPanel und das Textfeld ein JTextField. beides sind Klassenvariablen.
Code:
public MCG_AdminGui() {
super("MCG_AdminGui");
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
//Tabbed pane anlegen und ins Fenster packen
JPanel topPanel = new JPanel(new BorderLayout());
getContentPane().add(topPanel);
JTabbedPane tabbedPane = new JTabbedPane();
//Das hier ist die Tabelle im ersten TabbedPane(funktioniert)
String rowData[][];
DatabaseMNG.open();
String columnNames[] = {
"ID", "Name", "Longitude", "Latitude", "Description", "Address", "Data", "Cat", "Misc", "Create_DateTime", "Delete_DateTime", "Entry_DateTime", "Author"
};
try{
rowData = data.listDatabase();
}catch(SecurityException e){
JOptionPane.showMessageDialog(this, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
rowData = new String[0][0];
}
JTable table = new JTable(rowData, columnNames);
JScrollPane show = new JScrollPane(table);
//SearchLayout behinhalte die Formatierungen für die Suche
this.searchLayout();
this.insertLayout();
tabbedPane.addTab("Anzeigen",null, show, "Anzeigen der Tabelle");
tabbedPane.addTab("Suchen",null, search, "Suchen in der Tabelle");
tabbedPane.addTab("Einfügen", null, insert, "Daten in die Tabelle einfügen");
topPanel.add(tabbedPane);
JMenuBar menubar = new JMenuBar();
menubar.add(createFileMenu());
setJMenuBar(menubar);
}
private void searchLayout() {
// Es werden immer abwechselnd Label und Textfeld nebeneinander gesetzt
// Es sollte 3 Namen und 3 Textfelder Pro Zeile geben
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
search.setLayout(gbl);
//Label ID positionieren
gbc = makegbc(1 ,1 ,1 , 1);
gbc.fill = GridBagConstraints.BOTH;
JLabel label = new JLabel(" ID ");
gbl.setConstraints(label, gbc);
search.add(label);
//Textfeld für die ID positionieren
gbc = makegbc(1, 2, 1, 1);
gbc.fill = GridBagConstraints.BOTH;
gbl.setConstraints(sid, gbc);
search.add(sid);
gbc = makegbc(1, 23, 1, 1);
gbc.fill = GridBagConstraints.BOTH;
JButton button = new JButton("Search");
button.addActionListener(this);
gbl.setConstraints(button, gbc);
search.add(button);
}
private GridBagConstraints makegbc(int x, int y, int width, int height) {
GridBagConstraints gbc = new GridBagConstraints();
//Abstände zum Rand hier solltes es ganz oben links sein...
gbc.gridx = x;
gbc.gridy = y;
//Höhe und Breite des Dialogelements
gbc.gridwidth = width;
gbc.gridheight = height;
//Setzt Rand der um das eingefügte Element herum auf jedenfall frei bleibt
gbc.insets = new Insets(1, 1, 1, 1);
return gbc;
}