2017-05-22 13 views
1

이 코드는 아무 것도 표시하지 않지만 많은 수단을 다 써 버렸지 만 GUI에 아무 것도 표시하지 않습니다 (이미이 클래스를 호출하는 기본 클래스가 있습니다). 도와주세요. 두 JButtons 페이지의 아래쪽에 수평 및 JTextField 및 JLabel 화면 가운데에 넣으려고합니다.BorderLayout을 사용하는 자바 버튼 배치

+2

프레임에 추가하는 것과 같은 작업을 수행하지 않으시겠습니까? – Qwerky

+0

[GridLayouts] (http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html)을 조사해야합니다. 조금 혼란스러워 보일 수도 있으므로 두 번 읽어야 할 수도 있습니다. 그러나 이것이 내가 GridLayouts를 사용하는 법을 배웠던 방법이며, 지금 당장은 매우 유용합니다. – CodingNinja

+0

@ Cameron2222 아래 내 대답을 참조하십시오. 그것은 당신이 원하는 것입니까? – CodingNinja

답변

2

내가 가지고있는 것보다 더 근사하지만 그 예쁜 코드는 JFrame이 500x500이되도록 작동합니다.

package lab6; 

import javax.swing.*; 
import java.awt.*; 

public class Gui extends JFrame { 
    private JLabel label; 
    private JButton clear; 
    private JButton copy; 
    private JTextField textfield; 

    public Gui(){ 

     super("test"); 

     clear = new JButton("Clear"); 
     copy = new JButton("Copy"); 
     label = new JLabel("label"); 
     textfield = new JTextField("enter text here"); 

     JPanel masterPanel = new JPanel(new BorderLayout()); 

     JPanel top = new JPanel(); 
     top.setPreferredSize(new Dimension(100, 200)); 

     JPanel bottom = new JPanel(); 

     JPanel subBottom = new JPanel(); 
     subBottom.add(copy); 
     subBottom.add(clear); 


     JPanel centre = new JPanel(); 

     JPanel subCentre = new JPanel(); 
     subCentre.add(label); 
     subCentre.add(textfield); 


     bottom.add(subBottom); 
     centre.add(subCentre); 

     masterPanel.add(bottom, BorderLayout.PAGE_END); 
     masterPanel.add(top, BorderLayout.PAGE_START); 
     masterPanel.add(centre, BorderLayout.CENTER); 


     add(masterPanel); 
    } 


} 
+0

'페이지 맨 아래에 두 개의 JButton을 수평으로 놓으려고합니다.'- [BorderLayout 사용법] (http://docs.oracle.com)에서 스윙 튜토리얼의 섹션을 읽으십시오. /javase/tutorial/uiswing/layout/border.html)을 참조하십시오. 맨 아래에 단추가 들어있는 패널을 원하면 프레임에 패널을 추가 할 때 구속 조건을 지정해야합니다. – camickr

+0

왜 "마스터 패널"을 사용하고 있습니까? 튜토리얼을 읽지 않으셨습니까? 작업 예제는 GUI를 더 잘 만드는 방법을 보여줍니다. 작업 예제로 시작하여 변경하십시오. – camickr

+0

이 자습서에서는 "구성 요소가 원하는 크기와 컨테이너 크기의 제약에 따라 배치됩니다. 북쪽 및 남쪽 구성 요소가 수평으로 늘어나고, 동쪽 및 서쪽 구성 요소가 세로로 늘어날 수 있으며, 가운데 구성 요소가 수평으로 모두 늘어날 수 있습니다 그리고 남은 공간을 채우기 위해 수직으로. " 제약 조건을 적용하는 방법을 어떻게 알 수 있습니까? – Cameron2222

3

코드가 약간 복잡합니다. 두 패널, centrebuttons 만 있으면됩니다. 두 가지 이유 당신의 UI가 표시되지 않을 수 있습니다 : 당신이 수업 시간에 이런 짓을하지 않는 한

  1. 당신은 당신이 (setVisible(true)를 사용하여이 달성) true로 볼 수 설정하지
  2. 프레임에 패널을 추가하지, 당신 그것을 실행 그래서 (내가 창을 보여 주 방법을 추가)처럼

원하는 UI를 달성하는 한 가지 간단한 방법은 다음과 같습니다.

import javax.swing.*; 
import java.awt.*; 
public class test extends JFrame { 
    public Test() { 
     super("test"); 
     JPanel buttons = new JPanel(); 
     JPanel centre = new JPanel(); 
     add(buttons, BorderLayout.SOUTH); //these lines add the 
     add(centre, BorderLayout.CENTER); //panels to the frame 
     JButton clear = new JButton("Clear");      // No need 
     JButton copy = new JButton("Copy");      // to declare 
     JLabel label = new JLabel("Label");      // these 
     JTextField textfield = new JTextField("enter text here"); // privately 
     buttons.add(copy); 
     buttons.add(clear); 
     centre.add(label); 
     centre.add(textfield); 
     pack(); 
     setLocationRelativeTo(null); 
     setVisible(true); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } //end constructor 

    //added main method to run the UI 
    public static void main(String[] args) { 
     new Experiments(); 
    } //end main 
} //end class 

을 그리고 창을 보여줍니다 :

Window

+0

저를 위해 간단하게 해주셔서 감사합니다. GUI가 포함되어있는 메인에서 생성되었습니다. Gui go = new Gui(); \t \t \t go.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); \t \t \t go.setSize (500,500); \t \t \t go.setVisible (true); – Cameron2222

+0

@ Cameron2222 그렇다면 문제는 자신이 패널을 추가하지 않는다는 것입니다. 다행스럽게 도울 수있어! 도움이된다면이 대답을 수락하는 것을 고려하십시오. 감사! – CodingNinja

+0

@ Cameron2222는'pack();'을 진공 씰 백으로 생각합니다. 그것들 중 아무 것도 잘라 내지 않고 구성 요소를 단단히 닫는 것입니다. 이것은 프레임의 크기를 추측 할 필요가 없기 때문에 유용합니다. 프레임의 크기가 맞을 때까지 계속 조정하면 자동으로 조정됩니다. [this Javadoc] (http://docs.oracle.com/javase/8/docs/api/java/awt/Window.html#pack--) 및 [this post.] (https : // stackoverflow.com/questions/22982295/what-does-pack-do) – CodingNinja