>Java >java지도 시간 >JSplitPane 내 JScrollPane의 캔버스 크기 조정 문제를 해결하는 방법은 무엇입니까?

JSplitPane 내 JScrollPane의 캔버스 크기 조정 문제를 해결하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-29 16:44:13446검색

How to Fix Resizing Issues with Canvas in JScrollPane within JSplitPane?

JSplitPane 내의 JScrollPane 내에서 Canvas의 크기 조정 문제 해결

애플리케이션에서 다음을 포함하는 JSplitPane을 조정할 때 크기 조정 문제가 발생했습니다. JScrollPane 내의 캔버스. 상단 구성 요소의 크기를 줄이면 구분선이 Canvas 및 JScrollPane 아래로 확장되어 바람직하지 않은 모양이 됩니다.

해결책:

지정하는 것보다 기본 크기를 수동으로 설정하려면 구성 요소가 기본 크기를 동적으로 계산하도록 허용하는 것이 좋습니다. 이렇게 하면 pack() 메서드를 사용하여 둘러싸는 창의 크기를 적절하게 조정할 수 있습니다.

이 접근 방식을 시연하기 위해 다음 코드 샘플을 사용하여 상단에 배치된 GraphPanel로 구성된 SplitGraph를 생성할 수 있습니다. 구성 요소 및 하단 구성 요소의 해당 제어판:

import draw.GraphPanel;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.Image;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;

public class SplitGraph extends JPanel {

    public SplitGraph() {
        super(new GridLayout());
        JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
        GraphPanel graphPanel = new GraphPanel();
        Image image = new URL("https://placekitten.com/240/180").getContent();
        graphPanel.setImage(image);
        split.setTopComponent(new JScrollPane(graphPanel));
        split.setBottomComponent(graphPanel.getControlPanel());
        this.add(split);
    }

    private void display() {
        JFrame f = new JFrame("SplitGraph");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> new SplitGraph().display());
    }
}

이 예에서는 GraphPanel 인스턴스가 상단 구성 요소에 추가되고 관련 제어판이 하단 구성품. 코드는 수동으로 크기를 조정하지 않고도 구성 요소를 수용할 수 있도록 둘러싸는 창의 크기를 성공적으로 조정합니다.

위 내용은 JSplitPane 내 JScrollPane의 캔버스 크기 조정 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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