Comment définir la taille maximale d'un JDialog
Dans Swing, un JDialog est une fenêtre contextuelle qui peut être utilisée pour afficher informations ou recueillir les commentaires des utilisateurs. Par défaut, la taille maximale d'un JDialog est la taille du moniteur de l'utilisateur. Cependant, il est possible de définir une taille maximale personnalisée à l'aide de la méthode setMaximumSize().
Énoncé du problème
Lorsque vous essayez d'utiliser la méthode setMaximumSize() pour limiter la taille d'un JDialog contenant un volet de défilement et un panneau avec des boutons de validation, la méthode semble n'avoir aucun effet. La méthode de taille préférée, quant à elle, définit la boîte de dialogue à une taille fixe quel que soit son contenu.
Solution
Pour redimensionner dynamiquement un JDialog autour de son contenu vers le haut à une taille maximale spécifiée, il est important de prendre en compte les éléments suivants :
Exemple
Le code suivant crée un JDialog avec une JList qui grandit dynamiquement à mesure que des éléments sont ajoutés. Lorsque le nombre d'éléments atteint N, des barres de défilement commencent à apparaître :
<code class="java">import javax.swing.*; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; public class ListDialog { private static final int N = 12; private JDialog dlg = new JDialog(); private DefaultListModel model = new DefaultListModel(); private JList list = new JList(model); private JScrollPane sp = new JScrollPane(list); private int count; public ListDialog() { JPanel panel = new JPanel(); panel.add(new JButton(new AbstractAction("Add") { @Override public void actionPerformed(ActionEvent e) { append(); if (count <= N) { list.setVisibleRowCount(count); dlg.pack(); } } })); dlg.add(sp, BorderLayout.CENTER); dlg.add(panel, BorderLayout.SOUTH); dlg.pack(); dlg.setLocationRelativeTo(null); dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dlg.setVisible(true); } private void append() { model.addElement("String " + String.valueOf(++count)); list.ensureIndexIsVisible(count - 1); } public static void main(String[] a_args) { ListDialog pd = new ListDialog(); } }</code>
En résumé, définir la taille préférée à l'aide de la méthode setVisibleRowCount() peut aider à obtenir le comportement de redimensionnement dynamique souhaité tout en respectant le choix de l'utilisateur. taille maximale via la méthode setMaximumSize().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!