나는 GridBagLayout에 또 다른 패널이 포함 된 JScrollPane의이 (A JSplitPane를 withing에 JTabbedPane에 withing에있다,하지만 난 그 차이를 만드는 생각하지 않는다).내부 요소의 크기에 따라 패널 크기를 설정합니까?
원하는 것은 간단합니다. ScrollPane의 크기가 너무 작 으면 모든 요소가 표시되도록 세로 스크롤 막대를 표시하십시오. 슬프게도
int prefSize = lastButton.getLocationOnScreen().y + lastButton.getSize().height - myGridPanel.getLocationOnScreen().y;
myGridPanel.setPreferredSize(new Dimension(400, prefSize));
이 유일한 작품 : 그것을 달성하기 위해, 나는 높이를 추가, 마지막 요소의 위치를 취하고 패널 자체의 오프셋 substracts ComponentListener.componentResized에 대한 간단한 함수를 썼다 전 수동으로 창 크기를 조정합니다. 그 전에 스크롤 바는 끝까지 도달하지 못하므로 몇 행에 도달 할 수없고 맨 위의 JTextPane 요소가 부분적으로 숨겨집니다. 내가 말했듯이, 창 크기를 조정하거나 (수직 또는 수평으로 크기를 늘리거나 줄이면), 모든 요소가 정확하며 스크롤바는 마지막 요소 이후까지 정확하게 스크롤됩니다. 마지막 하나를 제외한 모든 행을 스크롤 할 수 있으며,
mainFrame.pack();
setPreferredSize();
mainFrame.setSize(dim);
mainFrame.revalidate();
mainFrame.repaint();
지금 :
나는 (따라서, stateChanged()) 탭에 프레임을 만들 때 다음 사항을 추가하거나 전환하여 상황을 개선 할 수 있었다 마지막 행은 ~ 30 % 밖에 보이지 않습니다. 다시 ... 수동으로 프레임의 크기를 조정하면 모든 것이 의도 한 것처럼 보입니다.
나는 단순한 뭔가를 놓치고있는 것처럼 느껴진다. 그러나 나는 그것이 무엇이 될 수 있는지 전혀 모른다. 주위를 검색하면 추가 제안을 보았습니다. setPreferredSize (panel.getPreferredSize());하지만 도움이되지 못했습니다.
감사합니다.
미리 감사드립니다.
흠, 모든게 좋지만 모든 것이 도움이되지 않습니다. 'BorderLayout','BoxLayout' 등을 시도했지만'GridBagLayout'없이 레이아웃을 작동시키는 법을 모르겠습니다. 그리고 이것은'setPreferredSize()'와 관련있는 것을 제외 할 때 확실히 작동하지 않습니다. – Markstar
@Markstar, 음, 질문 할 때마다 문제를 나타내는 적절한 [mcve]를 포함시켜야합니다. 내 조언을 따르는다면 효과가있을 것입니다. 우리는 그것이 작동하지 않도록하기 위해 무엇을하고 있는지 짐작할 수 없습니다. – camickr
예, 알고 있습니다. 나는 내가 간과 한 단순한 것이 있다고 가정/기대했다. 내가 말했듯이,'BorderLayout'을 사용할 수 없습니다. 왜냐하면 텍스트 요소가 정확하게 줄 바꿈되지 않을 것이고 (줄 바꿈 등으로) 중첩도 작동하지 않기 때문입니다. 최소한의 예제를 찾아 낼 수 있는지 알게 될 것입니다. – Markstar