할당이 있으며 지침에 따라 화면 중앙에 두 개의 레이블이 필요합니다 (수평 및 수직 모두).
이 질문은 여러 번 물어 왔지만이 질문을 검색 할 때마다 주어진 솔루션은 BoxLayout과 같은 다른 레이아웃 관리자를 사용하는 경우가 많습니다. 그러나 지침에서는 BorderLayout을 사용해야한다고 명시합니다.
원래 레이블을 패널에 추가하지 않고 대신 프레임에 직접 추가했지만 작동하지 않으므로 두 가지 모두를 작동하지 않는 JPanel에 둘 것을 권장했습니다.자바 스윙 - 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