私はそれらの間に50%の区切りを持つJSPlitPaneを持っています。 正しく動作します。Jsplitpaneは自動的にサイズ変更されます
しかし、右側にいくつかのJLabelを追加すると、jsplitpaneは私の50%のディバイダを無視し、左側のペインはサイズを増やし、右側を縮めます。
なぜこれが起こり、それを修正するのですか?
私のコードは次のとおりです。
import javax.swing.*;
import java.awt.*;
public class Example {
private static void setup() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(500, 500));
frame.setFocusable(true);
JSplitPane pane= new JSplitPane();
pane.setResizeWeight(0.5);
pane.setRightComponent(new JPanel());
JPanel myPanel = new JPanel();
myPanel.setLayout(new FlowLayout());
for(int i=0; i<20; i++) myPanel.add(new JLabel("hello"));
pane.setLeftComponent(myPanel);
frame.add(pane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
setup();
}
});
}
}
'しかし、その20件のJLabelが、そのスペースfirst'を埋めることはできません下の空間の山があるが - 別のレイアウトマネージャを使用してください。 FlowLayoutのルールは、すべてのコンポーネントが1行に表示されていることを前提に、適切なサイズが計算されることです。 '私は厳密に50%の比率を望んでいます - 再びあなたは' setResizeWeight() 'メソッドの使い方を理解していません。このメソッドは、分割ペインに追加された各コンポーネントの推奨サイズに基づいて領域が割り当てられた後にのみ適用されます。 – camickr
どのようにレイアウトマネージャー私は50%の比率を維持することができるようにも、jlabelsが正しく表示されるように使用する? – Skux
JSplitPaneを使用しないでください。これは、分割ペインがどのように動作するように設計されているかではありません。分割ペインを使用するポイントは、各コンポーネントが独自の優先サイズを決定し、必要に応じて余分なスペースを割り当てることです。その後、ユーザーは必要に応じて仕切りを調整することができます。各コンポーネントを50%にしたい場合は、GridLayoutを使用することができます。 – camickr