showmessagedialog - mostrar mensaje en java netbeans
Ajuste de texto en JOptionPane? (2)
Estoy usando el siguiente código para mostrar un mensaje de error en mi aplicación de swing
try {
...
} catch (Exception exp) {
JOptionPane.showMessageDialog(this, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
El ancho del diálogo de error se alarga dependiendo del mensaje. ¿Hay alguna forma de envolver el mensaje de error?
Agregue su mensaje a un componente de texto que pueda JEditorPane
, como JEditorPane
, luego especifique el panel del editor como el message
a su JOptionPane
. Consulte Cómo utilizar paneles de editor y paneles de texto y Cómo crear cuadros de diálogo para ver ejemplos.
Adición: Como alternativa al envoltorio, considere un enfoque orientado a la línea en un panel de desplazamiento, como se muestra a continuación.
f.add(new JButton(new AbstractAction("Oh noes!") {
@Override
public void actionPerformed(ActionEvent action) {
try {
throw new UnsupportedOperationException("Not supported yet.");
} catch (Exception e) {
StringBuilder sb = new StringBuilder("Error: ");
sb.append(e.getMessage());
sb.append("/n");
for (StackTraceElement ste : e.getStackTrace()) {
sb.append(ste.toString());
sb.append("/n");
}
JTextArea jta = new JTextArea(sb.toString());
JScrollPane jsp = new JScrollPane(jta){
@Override
public Dimension getPreferredSize() {
return new Dimension(480, 320);
}
};
JOptionPane.showMessageDialog(
null, jsp, "Error", JOptionPane.ERROR_MESSAGE);
}
}
}));
Un JOptionPane
usará un JLabel
para mostrar el texto por defecto. Una etiqueta formateará HTML. Establezca el ancho máximo en CSS.
JOptionPane.showMessageDialog(
this,
"<html><body><p style=''width: 200px;''>"+exp.getMessage()+"</p></body></html>",
"Error",
JOptionPane.ERROR_MESSAGE);
De manera más general, consulte Cómo usar HTML en Swing Components , así como este ejemplo simple de uso de HTML en JLabel
.