>Java >java지도 시간 >최대 제한을 사용하여 JDialog의 크기를 동적으로 조정하는 방법은 무엇입니까?

최대 제한을 사용하여 JDialog의 크기를 동적으로 조정하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 04:46:30957검색

How to Dynamically Size a JDialog with a Maximum Limit?

JDialog의 최대 크기 설정

JDialog의 크기를 제한하려는 과정에서 setMaximumSize() 메서드를 사용한 후에도 예기치 않은 동작이 발생할 수 있습니다. 이 문서의 목적은 이 문제를 명확히 하고 해결책을 제공하는 것입니다.

문제: 최대 크기 제한 실패

스크롤 창과 고정 크기 패널이 포함된 JDialog로 작업할 때 목표는 다음과 같습니다. 포함된 패널의 크기에 따라 대화 상자가 동적으로 확장되도록 합니다. 그러나 setMaximumSize()를 사용하여 최대 크기를 설정하려고 시도하면 뚜렷한 효과가 없습니다.

설명: 기본 최대 크기

구성 요소의 기본 최대 크기는 종종 감시 장치. 이는 최대 크기가 상위 구성 요소에서 상속되어 최대 크기를 큰 값으로 설정했을 수 있기 때문입니다.

해결책: 스크롤 창에 기본 크기 설정

원하는 결과를 얻으려면 특정 제한 내에서 동적 크기 조정을 수행하려면 스크롤 창의 기본 크기를 설정하는 것이 좋습니다. 스크롤 창의 기본 크기가 설정되면 JDialog는 임계값에 도달할 때까지 그에 따라 확장됩니다. 이때 스크롤 막대가 나타납니다.

예: 동적 크기의 대화 상자

다음 Java 코드 조각은 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>

이것은 코드는 JList의 항목 수에 따라 JDialog의 크기를 동적으로 조정합니다. 최대 크기(이 경우 12행)에 도달하면 스크롤바가 나타납니다.

위 내용은 최대 제한을 사용하여 JDialog의 크기를 동적으로 조정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.