Rumah  >  Artikel  >  Java  >  Bagaimana untuk Saiz JDialog secara Dinamik dengan Had Maksimum?

Bagaimana untuk Saiz JDialog secara Dinamik dengan Had Maksimum?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 04:46:30871semak imbas

How to Dynamically Size a JDialog with a Maximum Limit?

Menetapkan Saiz Maksimum untuk JDialog

Dalam usaha mengehadkan dimensi JDialog, anda mungkin menghadapi tingkah laku yang tidak dijangka walaupun selepas menggunakan kaedah setMaximumSize(). Artikel ini bertujuan untuk menjelaskan isu ini dan memberikan penyelesaian.

Isu: Had Saiz Maksimum Tidak Berjaya

Apabila bekerja dengan JDialog yang mengandungi anak tetingkap skrol dan panel bersaiz tetap, matlamatnya ialah untuk membiarkan dialog berkembang secara dinamik berdasarkan saiz panel terbenam. Walau bagaimanapun, percubaan untuk menetapkan saiz maksimum menggunakan setMaximumSize() tidak mempunyai kesan yang ketara.

Penjelasan: Saiz Maksimum Lalai

Saiz maksimum lalai komponen selalunya ditetapkan kepada saiz pantau. Ini kerana saiz maksimum diwarisi daripada komponen induk, yang mungkin telah menetapkan saiz maksimum kepada nilai yang besar.

Penyelesaian: Menetapkan Saiz Pilihan untuk Anak Tetingkap Tatal

Untuk mencapai yang diingini saiz dinamik dalam had tertentu, pertimbangkan untuk menetapkan saiz pilihan untuk anak tetingkap skrol. Apabila saiz pilihan anak tetingkap skrol ditetapkan, JDialog akan berkembang dengan sewajarnya sehingga ambang dicapai. Pada ketika itu, bar skrol akan muncul.

Contoh: Dialog Bersaiz Dinamik

Coretan kod Java berikut menunjukkan cara melaksanakan penyelesaian ini menggunakan JList:

<code class="java">import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

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();
                }
            }
        }));
        for (int i = 0; i < N - 2; i++) {
            this.append();
        }
        list.setVisibleRowCount(N - 2);
        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 " + count++);
        list.ensureIndexIsVisible(count - 1);
    }

    public static void main(String[] a_args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                ListDialog pd = new ListDialog();
            }
        });
    }
}</code>

Ini kod melaraskan saiz JDialog secara dinamik berdasarkan bilangan item dalam JList. Setelah saiz maksimum (dalam kes ini, 12 baris) dicapai, bar skrol akan muncul.

Atas ialah kandungan terperinci Bagaimana untuk Saiz JDialog secara Dinamik dengan Had Maksimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn