は、私は、次のクラスGridBagLayoutのアンカー&JScrollPaneのは
public class Demo {
private JFrame mainFrame;
static public Color BGCOLOUR1 = new Color(240, 240, 240);
public Demo() {
mainFrame = new JFrame("Demo");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setLayout(new BorderLayout());
mainFrame.setSize(900, 800);
JPanel centralPanel = new JPanel();
centralPanel.setOpaque(true);
centralPanel.setBackground(BGCOLOUR1);
centralPanel.setLayout(new GridBagLayout());
centralPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20),
BorderFactory.createTitledBorder("Panel")));
JPanel insidePanel = new JPanel();
insidePanel.setOpaque(true);
insidePanel.setBackground(BGCOLOUR1);
insidePanel.setLayout(new BorderLayout());
insidePanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("Inside panel"),
BorderFactory.createEmptyBorder(10, 10, 10, 10)));
JTextArea insidePanelText = new JTextArea(6, 50);
insidePanelText.setLineWrap(true);
insidePanel.add(insidePanelText);
centralPanel.add(insidePanel, new GridBagConstraints(0, 0, 1, 1, 1, 0, GridBagConstraints.NORTH,
GridBagConstraints.HORIZONTAL, new Insets(10, 10, 10, 10), 0, 0));
JScrollPane scrollPane = new JScrollPane(centralPanel);
mainFrame.add(scrollPane);
}
はなぜ内部のパネルが中央に配置されている発行centralPanel
(垂直)私はNORTH
へのGridBagConstraintsアンカーを設定すると?私はそれを一番上に置いて欲しい。また
、私はそれはまだ私よりも大きくなっているにもかかわらず、(できるだけ早く私は小さいサイズを変更としてうまく大規模アプリケーションのサイズを変更することができますが、例の通り、私はmainFrame
に追加する前にJScrollPane
でcentralPanel
を追加する場合最初にスクロールバーが表示されます)。それをどうやって防ぐことができますか?
編集:スクロールの問題を説明するために(私はこれらの画面取ったとき、私はフレームを編pack
):私は、アプリケーションを起動すると
はそれが何のスクロールバーを持っていないが
ウィンドウのサイズを大きくしてから小さくします。それを小さくすると、スクロールバーが表示されます。
'mainFrame.setSize(900,800);の代わりに' pack'を使用します。 – MadProgrammer
いいえ、ウィンドウを内容に合わせたくありません。私はそれを私が指定したサイズにしたい。 – Lieuwe
'pack'はあなたの2番目の問題を解決します – MadProgrammer