Hallo zusammen,
bin gerade bei meinem ersten GUI und möchte eine Tabelle in einem JScrollPane darstellen.
Ich nutze das GridBagLayout. Hierbei ist mir ein Problem aufgefallen, wenn ich das Fenster erzeuge und anschließend resize, springt die Größe des JScrollpane.
Hier der Beispielcode:
Um das Verhalten nachzustellen einfach den Code ausführen und das Fenster in X- oder Y-Richtung verkleinern. Das Scrollpane springt bei einer gewissen Größe auf ein kleineres Format. Ich verstehe hier nicht genau warum das passiert.
Wenn die Tabelle nicht zum JSCrollpane hinzugefügt wird, funktioniert alles so wie es soll...
Ziel ist es nachher, eine definierte Größe für die Tabelle zu erhalten (z.b. 200 pixel, würde ich ja dann über ipady einstellen?) und in Y Richtung den zusätzlichen Platz beim Scrollen über den "Plot" button hinzuzufügen. Der zusätzliche Platz in X-Richtung soll die Tabelle vergrößeren, wie es im Moment auch schon funktioniert.
Gibt es noch Einstellmöglichkeiten die ich noch nicht getroffen habe?
Vielen Dank für die Hilfe!
bin gerade bei meinem ersten GUI und möchte eine Tabelle in einem JScrollPane darstellen.
Ich nutze das GridBagLayout. Hierbei ist mir ein Problem aufgefallen, wenn ich das Fenster erzeuge und anschließend resize, springt die Größe des JScrollpane.
Hier der Beispielcode:
Java:
package myPackage;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JScrollPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JTable;
import javax.swing.JTabbedPane;
import javax.swing.JEditorPane;
import javax.swing.JComboBox;
public class lkjh extends JFrame {
private JPanel contentPane;
private JTable table;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
lkjh frame = new lkjh();
frame.setSize(800, 600);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public lkjh() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnDatei = new JMenu("Datei");
menuBar.add(mnDatei);
JMenuItem mntmOpen = new JMenuItem("Open");
mnDatei.add(mntmOpen);
JMenuItem mntmExit = new JMenuItem("Exit");
mntmExit.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent arg0) {
System.exit(0);
}
});
mnDatei.add(mntmExit);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane = new GridBagLayout();
gbl_contentPane.columnWidths = new int[]{0, 0, 0, 0, 0};
gbl_contentPane.rowHeights = new int[]{38, 0, 0, 0, 0, 0};
gbl_contentPane.columnWeights = new double[]{0.0, 1.0, 0.0, 0.0, Double.MIN_VALUE};
gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 1.0, 0.0, 0.0, Double.MIN_VALUE};
contentPane.setLayout(gbl_contentPane);
JButton btnAdd = new JButton("Add");
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
GridBagConstraints gbc_btnAdd = new GridBagConstraints();
gbc_btnAdd.anchor = GridBagConstraints.PAGE_START;
gbc_btnAdd.insets = new Insets(0, 0, 5, 5);
gbc_btnAdd.gridx = 0;
gbc_btnAdd.gridy = 0;
contentPane.add(btnAdd, gbc_btnAdd);
JScrollPane scrollPane = new JScrollPane();
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
gbc_scrollPane.weightx = 1.0;
gbc_scrollPane.gridheight = 2;
gbc_scrollPane.gridwidth = 2;
gbc_scrollPane.insets = new Insets(0, 0, 5, 5);
gbc_scrollPane.fill = GridBagConstraints.BOTH;
gbc_scrollPane.gridx = 1;
gbc_scrollPane.gridy = 0;
contentPane.add(scrollPane, gbc_scrollPane);
table = new JTable();
scrollPane.setViewportView(table);
JButton btnDelete = new JButton("Delete");
GridBagConstraints gbc_btnDelete = new GridBagConstraints();
gbc_btnDelete.anchor = GridBagConstraints.PAGE_START;
gbc_btnDelete.insets = new Insets(0, 0, 5, 5);
gbc_btnDelete.gridx = 0;
gbc_btnDelete.gridy = 1;
contentPane.add(btnDelete, gbc_btnDelete);
JButton btnNewButton = new JButton("Plot");
GridBagConstraints gbc_btnNewButton = new GridBagConstraints();
gbc_btnNewButton.anchor = GridBagConstraints.SOUTH;
gbc_btnNewButton.weighty = 1.0;
gbc_btnNewButton.insets = new Insets(0, 0, 5, 5);
gbc_btnNewButton.gridx = 2;
gbc_btnNewButton.gridy = 2;
contentPane.add(btnNewButton, gbc_btnNewButton);
JButton btnNewButton_2 = new JButton("New button");
GridBagConstraints gbc_btnNewButton_2 = new GridBagConstraints();
gbc_btnNewButton_2.insets = new Insets(0, 0, 5, 5);
gbc_btnNewButton_2.gridx = 2;
gbc_btnNewButton_2.gridy = 3;
contentPane.add(btnNewButton_2, gbc_btnNewButton_2);
JButton btnNewButton_1 = new JButton("Exit");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
}
Um das Verhalten nachzustellen einfach den Code ausführen und das Fenster in X- oder Y-Richtung verkleinern. Das Scrollpane springt bei einer gewissen Größe auf ein kleineres Format. Ich verstehe hier nicht genau warum das passiert.
Wenn die Tabelle nicht zum JSCrollpane hinzugefügt wird, funktioniert alles so wie es soll...
Ziel ist es nachher, eine definierte Größe für die Tabelle zu erhalten (z.b. 200 pixel, würde ich ja dann über ipady einstellen?) und in Y Richtung den zusätzlichen Platz beim Scrollen über den "Plot" button hinzuzufügen. Der zusätzliche Platz in X-Richtung soll die Tabelle vergrößeren, wie es im Moment auch schon funktioniert.
Gibt es noch Einstellmöglichkeiten die ich noch nicht getroffen habe?
Vielen Dank für die Hilfe!