私は割り当てを持っています。指示には、2つのラベルを画面の中央に配置する必要があります(水平と垂直の両方)。
私はこの質問が何度も聞かれたことは知っていますが、この質問を検索するたびに、BoxLayoutのような異なるレイアウトマネージャを使用することがよくあります。ただし、この指示ではBorderLayoutを使用する必要があることも示しています。
元々は、ラベルをパネルに追加せず、代わりにフレームに直接追加しましたが、これはうまくいかなかったため、どちらも機能していないJPanelにそれらを配置するように指示されました。Java Swing - BorderLayoutを使用してJLabelを中心にする
は私のコードは、現在、次のようになります。
JButton butSubmit = new JButton("Submit");
JButton butReset = new JButton("Reset");
JLabel nameAndReg = new JLabel("My details", SwingConstants.CENTER);
JLabel errorMsg = new JLabel("The error message", SwingConstants.CENTER);
nameAndReg.setForeground(Color.blue);
JTextField redVal = new JTextField(3);
JTextField greenVal = new JTextField(3);
JTextField blueVal = new JTextField(3);
JPanel butPanelSouth = new JPanel();
JPanel butPanelNorth = new JPanel();
JPanel labsPanel = new JPanel();
butPanelSouth.add(redVal);
butPanelSouth.add(greenVal);
butPanelSouth.add(blueVal);
butPanelSouth.add(butSubmit);
butPanelNorth.add(butReset);
labsPanel.add(nameAndReg, BorderLayout.CENTER);
labsPanel.add(errorMsg, BorderLayout.CENTER);
add(labsPanel, BorderLayout.CENTER);
add(butPanelNorth, BorderLayout.NORTH);
add(butPanelSouth, BorderLayout.SOUTH);
をそして、これはそれが生成するものである:
は、どのように私は「私の詳細」と「エラーメッセージ」は垂直方向と水平方向であることを得ることができますウィンドウの中央、もう一方は下にあり、それでもBorderLayoutを使用していますか?
編集:申し訳ありませんが、私は非常に明確ではなかったことを実感します。私が与えられた助言は、おそらくあなたのレイアウトマネージャを入れ子にする、つまりJPanelをJFrameのBorderLayoutの中心に置くことでした。
テキストのためにあなたのJLabelが中央にないと仮定していますか? JLabelのバックカラーを変更して、JLabel全体が最初に配置されている場所を確認することができます。すでにすべてのアプローチを試してみたら、すでに中心にあるかもしれません。 – user3437460
あなたのすべてのパネルは** BorderLayoutを使用しなければなりません(それは狂っています...)、または異なるLayoutManagerを持つネストされたパネルを使用できますか?現在、あなたのサブパネルに 'FlowLayout'を使用しています(' JPanel'コンストラクタにレイアウトを渡さない場合、 'FlowLayout'が使用されます)。 – Ansharja
実際に、私は何をするようにアドバイスされたので、 「おそらくレイアウトマネージャを入れ子にします。つまり、JPanelをJFrameのBorderLayoutの中心に配置します。 – electricbl00