Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Saiz JDialog secara Dinamik dengan Had Maksimum?

Linda Hamilton
Lepaskan: 2024-10-24 04:46:30
asal
870 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!