に中央のパネルでビューを中央に、私はUI
3とパネル、leftPanel
、middlePanel
とrightPanel
を構築する必要があり、パネルはHorizontally
どのようにスイング
left
を整列させる必要があるとright
パネルは、としてmaximum
とequal
幅を取得する必要があります中間パネルでは子コンポーネントとしての幅がminimum
になりますが、パネルが追加されるとビューは中央パネルの中央に配置する必要があります。私はOracleのスイングのチュートリアルサイトからRule
クラスを使用していた
私はUI
import java.awt.Color;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class SwingTest extends JFrame {
private static final long serialVersionUID = 1L;
public SwingTest() {
setTitle("Swing Test");
setSize(750, 350);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(getParent());
// Rule used to find the component positions, for the testing purpose
Rule rule = new Rule(Rule.HORIZONTAL, true);
rule.setPreferredWidth(10);
rule.setPreferredHeight(40);
SidePanel leftPanel = new SidePanel("Left");
SidePanel rightPanel = new SidePanel("Right");
JPanel middlePanel = new JPanel();
middlePanel.setBorder(BorderFactory.createLineBorder(Color.black));
// Add left,right and middle panel horizontally
JPanel containerPanel = new JPanel();
containerPanel.setLayout(new BoxLayout(containerPanel, BoxLayout.X_AXIS));
containerPanel.add(leftPanel);
containerPanel.add(middlePanel);
containerPanel.add(rightPanel);
// Add rule and container panel Vertically
JPanel outerPanel = new JPanel();
outerPanel.setLayout(new BoxLayout(outerPanel, BoxLayout.Y_AXIS));
outerPanel.add(rule);
outerPanel.add(containerPanel);
add(outerPanel);
}
public static void main(String[] args) {
SwingTest test = new SwingTest();
test.setVisible(true);
}
private static class SidePanel extends JPanel {
private static final long serialVersionUID = 1L;
private SidePanel(String text) {
setLayout(new GridBagLayout());
add(new JLabel(text));
}
}
}
を構築するために、次のテストコードを行っている、部品の位置を見つけるために使用することができます。私は
に「UIのスクリーンショットに示され、ビューは中央のパネルを中心取得されていないとして、私が持っている問題は、= '+左中央のパネルの幅と中心ビュー今、右のパネルでRule.java
を取得します手動でパネルの高さと幅を設定したくない場合は、LayoutManager
自身で処理する必要があります。私が欲しいもの
は、中央のパネルは道left + middle/2 = middle/2 + right
パネル幅の中央に取得する必要があります。
ミドルパネルを中央に表示させる方法が見つかりませんでしたが、誰かが私にこの解決策を見つけるのを助けてくれましたか?