2014-04-12 6 views
1

첫 줄에 텍스트 필드가있는 java awt 프로그램을 만드는 방법, 다음 5 줄에는 각각 5 개의 버튼이 있고 다음 4 줄에는 각각 4 개의 버튼이 있습니다. 그리고 단추와 공간 사이의 크기를 설정하는 방법은 무엇입니까? 나는 3 개의 패널을 사용했지만 작동하지는 않았다.자바 awt에서 프레임에 버튼과 패널을 추가하는 방법

`import java.awt.*; 
class cal extends Frame { 
cal(){ 
Panel p1=new Panel(); 
Panel p2=new Panel(); 
Panel p3=new Panel(); 
p1.setLayout(new GridLayout(2,3)); 
p2.setLayout(new GridLayout(2,2)); 
TextField k=new TextField("0",20); 
Button a=new Button("HI"); 
Button b=new Button("HI"); 
Button c=new Button("HI"); 
Button d=new Button("HI"); 
Button e=new Button("HI"); 
Button l=new Button("Hello"); 
Button g=new Button("Hello"); 
Button h=new Button("Hello"); 
Button i=new Button("Hello"); 
p1.add(a); 
p1.add(b); 
p1.add(c); 
p1.add(d); 
p1.add(e); 
p2.add(l); 
p2.add(g); 
p2.add(h); 
p2.add(i); 
Frame f=new Frame(); 
f.setSize(500,500); 
f.add(p3); 
f.add(p1); 
f.add(p2); 

show(); 
} 
public static void main(String[] args){ 
new cal();} 
}` 

답변

3
  1. 당신의 GUI를위한 AWT 라이브러리 구성 요소를 사용하지만, 오히려 그러한 JFrame의, JPanel에, JButton의와 스윙 라이브러리의 구성 요소를 사용하지 마십시오 (그러나 나를 만든 샘플 프로그램은 아무것도 표시되지 않습니다) ...
  2. 최상위 창에서 내용을 보려면 최상위 창에 표시 할 구성 요소를 추가해야합니다. 다른 말로하면 패널을 추가해야합니다 (JPanels이어야 함) add(...) 메소드를 통해 메인 클래스에 추가해야합니다. 이 객체를 f이라고하는 Frame 객체에 추가하지만 현재 클래스를 나타내는 Frame 인 this - 완전히 다른 두 객체가 표시됩니다.
  3. 코드를 작동시키는 한 가지 방법은 이 아닌 클래스가 최상위 창을 확장하도록하는 것입니다. 대신 최상위 창을 만들고 (구성중인 것처럼) 구성 요소를 추가 한 후에 표시하십시오. 하지 않음).
  4. show()과 같은 비추천 메소드를 호출하지 마십시오. 이렇게하는 것은 위험 할 수 있습니다. 컴파일러는 이에 대한 경고를 주어야하며 경고에 유의해야합니다.
  5. 레이아웃 관리자에 대해 자세히 알아보고 사용하십시오. 구성 요소에 기본 레이아웃 관리자가 있지만 올바르게 사용하지 않기 때문에 현재 구성 요소를 사용하고 있습니다.
  6. 가장 중요한 것은 here을 찾을 수있는 자습서를 읽으십시오.이 내용을 추측 할 수 없기 때문입니다.
  7. 여기에 코드를 게시하지 마십시오.이 코드는 모두 읽기가 매우 어렵 기 때문에 왼쪽에 정렬됩니다.

    f.setLayout(new GridLayout(3,1));// you may want three rows and 1 column for this. 
    f.setVisible(true);//for frame should be visible. 
    

    : 쇼() 함수를 제거하고로 교체

0

당신은

p1.setLayout(new GridLayout(5,5));//To incease gap between components you need to use new GridLayout(5,5,hgap,ygap) 
p2.setLayout(new GridLayout(4,4));//similar here. 

에 P1과 P2의 GridLayout과 가치를 교체해야하고 코드가 제대로 여기 수행되지 않습니다 pls는 gridlayout에서 구성 요소 간의 간격을 늘리는 방법에 대한 링크를 따릅니다 : http://docs.oracle.com/javase/tutorial/uiswing/layout/group.html.

왜 자바 스윙을 사용하지 않습니까? 그것은 더 나은 기능을 고급 있습니다.

수정 된 코드는이 될 것입니다 :

import java.awt.*; 
public class Cal extends Frame { 
Cal(){ 

Panel p1=new Panel(); 
Panel p2=new Panel(); 
Panel p3=new Panel(); 

p1.setLayout(new GridLayout(5,5)); 
p2.setLayout(new GridLayout(4,4)); 

TextField k=new TextField(); 

Button a=new Button("HI"); 
Button b=new Button("HI"); 
Button c=new Button("HI"); 
Button d=new Button("HI"); 
Button e=new Button("HI"); 
Button l=new Button("Hello"); 
Button g=new Button("Hello"); 
Button h=new Button("Hello"); 
Button i=new Button("Hello"); 

p1.add(a); 
p1.add(b); 
p1.add(c); 
p1.add(d); 
p1.add(e); 
p2.add(l); 
p2.add(g); 
p2.add(h); 
p2.add(i); 
p3.add(k); 

Frame f=new Frame(); 
f.setLayout(new GridLayout(3,1)); 
f.setSize(500,500); 
f.add(p3); 
f.add(p1); 
f.add(p2); 
f.setVisible(true); 
} 
public static void main(String[] args){ 
new Cal();} 
} 
관련 문제