2014-10-04 4 views
-1

저는 Java의 초보자입니다. 특히 GUI 디자인 분야입니다. 사용자로부터 문자열을 받아들이고 JOptionPane (아직 구현되지 않은 ActionListener)을 사용하여 간단한 Java Swing 인터페이스를 만들었습니다.엔티티의 출력 레이아웃이 예상대로 맞지 않습니다.

내가 직면 한 주된 문제는 출력에서 ​​개체 정렬에 있습니다. 객체에 어떤 경계선이 있더라도 항상 한 행에 나타납니다. 또한 때로는 출력 프레임이 전혀 표시되지 않습니다. 여러 번 실행 한 후에 마침내 객체가 표시되지만 레이아웃이 아닌 객체가 표시됩니다. 내가 잘못거야 어디

package guiapp; 

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

public class GUIApp { 

private static JFrame frame; 
private static JPanel panel; 
private static JLabel label; 
private static JTextField text; 
private static JButton click; 

public static void CreateGUI(){ 
frame = new JFrame("Hello to NetBeans!"); 
frame.setSize(750, 750); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

panel = new JPanel(); 
panel.setBackground(Color.BLUE); 

label = new JLabel("Enter a string: "); 
label.setBounds(50,35,150,40); 
label.setVisible(true); 

text = new JTextField(); 
text.setBounds(250,35,150,40); 
text.setVisible(true); 

click = new JButton("Click here!"); 
click.setBounds(150,80,150,40); 
click.setVisible(true); 

panel.add(text); 
panel.add(label); 
panel.add(click); 


frame.add(panel); 
frame.setVisible(true); 

} 

public static void main(String[] args) { 
    CreateGUI(); 
} 

} 

누군가가 말해 주시겠습니까 :

이 내 코드? 레이아웃 문법이 잘못 나온 것 같습니다.

+1

Java GUI는 다른 OS, 화면 크기, 화면 해상도 등에서 작동해야합니다. 따라서 픽셀 완벽한 레이아웃에 도움이되지 않습니다. 대신 레이아웃 관리자 또는 [조합] (http://stackoverflow.com/a/5630271/418556)과 [공백] 레이아웃 채우기 및 테두리 (http://stackoverflow.com/a/17874718/)를 사용하십시오. 418556). –

+0

BTW -'int result = JOptionPane.showInputDialog (parent, "문자열 입력");은 GUI가하는 대부분의 것을 대신 할 수 있습니다. –

답변

3

개체에 어떤 경계가 있더라도 항상 하나의 줄에 나타납니다.

기본 레이아웃 관리자가 JPanel : FlowLayout 일 가능성이 큽니다. 반면 스윙은 레이아웃 관리자와 함께 사용하도록 설계되었으며 setBounds(...), setLocation(...)setSize(...)과 같은 메서드 사용은 권장되지 않습니다. 수업을 참조하십시오.

관련 문제