Hallo,
also ich hab ja schon ein paar mal etwas mit dem GBL gemacht, aber irgendwie wirkt das auf mich zum teil noch immer etwas willkürlich, bzw. nicht nachvollziehbar.
Folgende Klasse, ist ein KSKB damit ihr das besser nachvollziehen könnt und auch daran rumspielen könnt:
Wenn man das Fenster jetzt kleiner macht, und zwar egal ob der Höhe oder der Breite nach, dann springt das obere Label plötzlich auf 2 Zeilen um, obwohl es scheinbar keinen Grund dafür gibt. Immerhin würde alles noch genauso passen wie es anfangs ist. Irgendwie wird dem aber der Platz weggenommen, ich verstehe nicht wodurch und warum er ausgerechnet nach dem Wort "class", also schon nach gerade mal 25 Pixel umbricht.
Kann mir das jemand erklären? An welcher/n Einstellung(en) der GridBagConstraints für welche Komponente(n) liegt das?
Danke
also ich hab ja schon ein paar mal etwas mit dem GBL gemacht, aber irgendwie wirkt das auf mich zum teil noch immer etwas willkürlich, bzw. nicht nachvollziehbar.
Folgende Klasse, ist ein KSKB damit ihr das besser nachvollziehen könnt und auch daran rumspielen könnt:
Java:
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Window;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
public class ExceptionDialogTest extends JDialog {
public static void main(String[] args) {
try {
throw new Exception("Sorry, you suck at coding GridBagLayout!");
} catch (Exception e) {
ExceptionDialogTest.show(e);
}
}
public static void show(Exception e) {
show(e, null);
}
public static void show(Exception e, Window owner) {
e.printStackTrace();
new ExceptionDialogTest(e, owner).setVisible(true);
}
private ExceptionDialogTest(Exception e, Window owner) {
super(owner);
setModal(true);
setAlwaysOnTop(owner == null);
setTitle("Unexpected Error");
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
JLabel errorIcon = new JLabel(UIManager.getIcon("OptionPane.errorIcon"));
errorIcon.setPreferredSize(new Dimension(50, 50));
c = new GridBagConstraints(0, 0, 1, 2, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0);
add(errorIcon, c);
JLabel eClass = new JLabel("<html><b>" + e.getClass().toString() + ":</b></html>");
c = new GridBagConstraints(1, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 0, 0, 5), 0, 0);
add(eClass, c);
JLabel eMessage = new JLabel(e.getMessage());
c = new GridBagConstraints(1, 1, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 5), 0, 0);
add(eMessage, c);
JTextArea eStackTrace = new JTextArea();
eStackTrace.setEditable(false);
StackTraceElement[] stackTrace = e.getStackTrace();
for (int i = 0; i < stackTrace.length; i++) {
StackTraceElement ste = stackTrace[i];
eStackTrace.append("at " + ste.toString());
if (i < stackTrace.length - 1) {
eStackTrace.append("\n");
}
}
JScrollPane stackTraceScroll = new JScrollPane(eStackTrace);
stackTraceScroll.setPreferredSize(new Dimension(450, 150));
c = new GridBagConstraints(0, 2, 2, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0);
add(stackTraceScroll, c);
JButton mail = new JButton("Report this Error");
c = new GridBagConstraints(1, 3, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0);
add(mail, c);
pack();
setLocationRelativeTo(owner);
}
}
Wenn man das Fenster jetzt kleiner macht, und zwar egal ob der Höhe oder der Breite nach, dann springt das obere Label plötzlich auf 2 Zeilen um, obwohl es scheinbar keinen Grund dafür gibt. Immerhin würde alles noch genauso passen wie es anfangs ist. Irgendwie wird dem aber der Platz weggenommen, ich verstehe nicht wodurch und warum er ausgerechnet nach dem Wort "class", also schon nach gerade mal 25 Pixel umbricht.
Kann mir das jemand erklären? An welcher/n Einstellung(en) der GridBagConstraints für welche Komponente(n) liegt das?
Danke
Zuletzt bearbeitet von einem Moderator: