일부 정보를 표시하기 위해 두 개의 JSplitPanes
을 사용합니다. 하나는 수평 분배기를 사용하고 다른 하나는 수직 분배기를 사용합니다. 다음 문제는 JSplitPanes
모두에 적용됩니다.JFrame 크기 조정 이동 JSplitPane 구분선
는 내 응용 프로그램의 주 JFrame
, 그들은 화면의 일정 비율을 차지해야으로 JSplitPanes
또한 크기 조정 크기를 조정할 때 (모든 JPanels
이 JFrame
크기 조정에 적응, 행동은 MigLayout
의 폭과 높이를 매개 변수로 설정).
분할 자 위치는 중요하며 JSplitPane
크기로 일정해야합니다. 이를 위해 setResizeWeight()
과 setDividerLocation()
을 사용합니다.
주요 문제 JFrame
리사이즈에 산기 0.0/0 %로 유지되지 않는다는 것이다 대신에 5 ~ 10 % ~ 이동 :
----->를
나는 이것이 resizeWeight
에 의한 것이라고 생각했지만, 그걸 가지고 놀았고 전혀 행동에 변화가 없었습니다.
누구든지이 문제를 해결할 수 있습니까? ComponentAdapter
을 구현했지만 변수에 나누는 사람의 위치를 저장하지 못했습니다. Preferences
XML 키 componentResized()
에 분배 자의 위치를 복원 할 수 없습니다.
예제 코드 : 나는 @ChrisK와 같은 프로젝트에 대한 작업이 오늘을 살펴했다
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import net.miginfocom.swing.MigLayout;
public class JSplitPaneTest {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setMinimumSize(new Dimension(500, 500));
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new MigLayout());
JPanel panel1 = new JPanel();
panel1.setBackground(Color.RED);
JPanel panel2 = new JPanel();
panel1.setBackground(Color.GREEN);
final JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
panel1, panel2);
splitPane.setResizeWeight(0.5);
splitPane.setOpaque(false);
splitPane.setOneTouchExpandable(true); // does not work on Linux :(
splitPane.setBorder(null);
mainPanel.add(splitPane, "w 100%, h 90%, wrap");
JButton button = new JButton("Set to 0");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
splitPane.setDividerLocation(0.0);
}
});
mainPanel.add(button, "span");
frame.add(mainPanel);
frame.setVisible(true);
}
}
빨리 SSCCE/MCVE, short, runnable, compilable 게시 – mKorbel
샘플 코드를 추가했습니다. . setResizeWeight()는 비헤이비어를 변경합니다. 그러나 분배기는 진정으로 0에 머 무르지 않습니다. – ChrisK