Это мой первый пост здесь, поэтому, пожалуйста, прости меня, если сделаю какую-то ошибку форматирования и расскажу, как это сделать.
Я немного новичок в кодировании с GridBagLayout, поэтому мне удалосьпонять основную концепцию этого.Время от времени случается, что форматирование полностью исчезает.
Как это и должно быть, большое красивое TextPane:
Как это иногда бывает, TP действительно маленький:
Единственный способ вызвать эту проблему - вызвать окно из JButton.Я вставил код для вызова окна (Error.showDialog(new Exception());
) в нескольких местах, и, похоже, это происходит всякий раз, когда вызывается ActionListener.
Это мой диалог, печатающий сообщение об ошибке.
public static void showDialog(Exception myException) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(os);
myException.printStackTrace(ps);
try {
ErrorString = os.toString("UTF8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
JFrame window = new JFrame("Error");
window.setSize(550, 600);
window.setLocationRelativeTo(null);
window.setResizable(false);
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(5, 5, 5, 5);
c.fill = GridBagConstraints.BOTH;
c.gridy = 0;
tpError = new JTextPane();
tpError.setPreferredSize(new Dimension(500, 500));
tpError.setEditable(false);
tpError.setText(ErrorString);
JScrollPane scrollPane = new JScrollPane(tpError, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel.add(scrollPane, c);
c.gridy++;
JPanel panelBtns = new JPanel(new FlowLayout());
JButton btnClose = new JButton("Schließen");
btnClose.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
window.setVisible(false);
window.dispose();
}
});
panelBtns.add(btnClose);
JButton btnSend = new JButton("Bericht");
btnSend.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent AE) {
try {
Desktop.getDesktop().browse(new URI("mailto:my.name@mail.de?subject=Fehler%20im%20Converter"));
} catch (IOException | URISyntaxException ex) {
ex.printStackTrace();
}
}
});
panelBtns.add(btnSend);
panel.add(panelBtns,c );
window.add(panel);
window.setVisible(true);
window.repaint();
}
Как показано на изображениях, форматирование иногда сбрасывается.Я сталкивался с этой проблемой несколько раз, но я просто проигнорировал ее.На этот раз важно, чтобы он делал то, что я хочу.