Questo è un esempio:Originariamente inviato da melmar20
vorrei che i dettagli fossero nascosti e farli comparire solo se l'utente decide di visionarli.
Ed è largamente migliorabile sia come aspetto che come comportamento. Ora continua tu ....codice:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ProvaMessaggio { public static void main(String[] args) throws Exception { SwingUtilities.invokeLater(new Runnable() { public void run() { errorMessageBox(null, "messaggio di errore", "Questa è la parte dove " + "ci sono dei dettagli circa l'errore che " + "è avvenuto"); } }); } public static void errorMessageBox(Component parentComponent, String messaggio, String dettagli) { JLabel text1 = new JLabel(messaggio); final JButton button = new JButton("Mostra dettagli"); final JLabel text2 = new JLabel(dettagli); text2.setVisible(false); Object[] msg = { text1, button, text2 }; JOptionPane optionPane = new JOptionPane(msg, JOptionPane.WARNING_MESSAGE); final JDialog dialog = optionPane.createDialog(parentComponent, "Errore"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (text2.isVisible()) { text2.setVisible(false); button.setText("Mostra dettagli"); } else { text2.setVisible(true); button.setText("Nascondi dettagli"); } dialog.pack(); } }); dialog.setVisible(true); dialog.dispose(); } }
Nota che ho usato "direttamente" JOptionPane, non tramite i showXXX(). Questo perché mi serve il reference al JDialog per farne il pack(). È questo che permette di espandere/ridurre al necessario la dialog.


Rispondi quotando