저는 Java에 비교적 익숙하지 않았습니다. 지난 2 일간 Java 프로그램을 올바로 배치하려고 노력하면서 지난 두 시간을 보냈습니다. 누군가 나를 위해 몇 가지 사항을 해결할 수 있기를 바랍니다. .Swing을 사용하여 기본 응용 프로그램에서 레이아웃이 어려웠습니다.
JMenuBar를 사용하여 응용 프로그램에 메뉴 표시 줄을 추가하기로 결정할 때까지 레이아웃이 모두 잘 진행되고 있었고 이제는 응용 프로그램의 메뉴 표시 줄이 사라지고 파일 메뉴의 너비가 창 중앙에 연결됩니다 바, 또는 완벽하게 작동하지만 아래 버튼을 숨 깁니다.
내 최근의 시도가 조금 더 가깝지만, 메뉴 막대 컨테이너를 BorderLayout으로 설정할 때 메뉴 막대의 높이가 어지럽게 보이는 것 같습니다.
누구나 내가 잘못 가고있는 곳으로 올바른 방향으로 나를 가리킬 수 있습니까?
JPanel mainPane = new JPanel();
BoxLayout progLayout = new BoxLayout(mainPane, BoxLayout.Y_AXIS);
mainPane.setLayout(progLayout);
setContentPane(mainPane);
JMenuBar menuBar = new JMenuBar();
JMenu file = new JMenu("File");
menuBar.add(file);
JMenuItem project = new JMenuItem("New Project");
JMenuItem exit = new JMenuItem("Exit");
file.add(project);
file.add(exit);
JPanel row0 = new JPanel();
BorderLayout menuBarLayout = new BorderLayout();
row0.setLayout(menuBarLayout);
row0.add(menuBar);
add(row0);
JPanel row1 = new JPanel();
row1.setOpaque(false);
row1.add(domainLabel);
row1.add(projectNameInput);
row1.add(userSubmit);
row1.add(userClear);
add(row1);
감사합니다.
* 편집 : 나는 마침내 아래 답변 덕분에 그것을 얻을 수있었습니다. 솔루션에 대한 아래 주석을보십시오.
보통 나는 그것의'으로 setJMenuBar (...)'방식을 통해 JFrame의 자체로의 JMenuBar를 추가했습니다. 이 메소드는 BorderLayout.NORTH 형식으로 contentPane 바로 위에 추가합니다. 내 JFrame을 다른 곳에서 만든 경우, 때로는 공개 된'getJMenuBar()'메소드 위에 클래스를 제공하여 다른 클래스가 여기에서 생성 된 메뉴 막대를 추출 할 수 있도록합니다. –
우선 이것은 매우 부적합합니다 :) "File.add (exit);" 자바 변수의 경우 소문자로 시작하고 다른 단어는 낙타의 경우로 시작해야합니다. LOL 나는 File 클래스에서 .add()와 같은 정적 메소드를 본 적이 없다고 생각했다. (나쁜 연습 – doNotCheckMyBlog
@Brogrammer 그 점을 지적 해 주셔서 감사합니다. 나머지 코드에서 알 수 있듯이, 당신이 언급 한 컨벤션, 나는 그것에 대해 생각하지 않고 대문자를 입력 했음에 틀림 없다. 이것은 다른 사람들이 혼란스럽게하는 것을 막기 위해 편집되었다;) –