마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[자바 스윙] 레이아웃 위치 관련해서 질문 있습니다.

0 추천

안녕하세요. 스윙을 공부하다 모르는 점이 있어서 질문을 올리게 되었습니다.

회원가입 관련해서 만들고 있는데, 레이아웃을 어떻게 줘야 할지 잘 몰라서 고민을 계속하다 글을 올리네요..

첨부한 사진과 같이(yes파일) , 어느정도까지 입력하고, 세로로 넘어가야하는데 패널에 레이아웃을 줘서 그런지,

제가 만든 파일(no 파일) 같이 되네요.

패널에 추가 시키고 난 이후에, yes파일처럼, 다음 행으로 넘기고 싶은데 이럴때는 어떻게 해야 하나요?

아래에 사진과 소스 첨부합니다 흑흑..

첫번째 사진이 yes 파일이고, 2번째 파일이 no 파일입니다.

 

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Exam2 {
public void go()
{
JFrame Recruit = new JFrame();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();

JLabel label = new JLabel("회원가입"); // 여기는 좀 수정.. 전반적으로 이름들 다바꾸기
JLabel ID = new JLabel("ID ");
JButton IDbtn = new JButton("중복확인");
JLabel PW = new JLabel("PW ");
JLabel PWID = new JLabel("PW확인 ");
JLabel NAME = new JLabel("이름 ");
JLabel TEL = new JLabel("전화번호 ");
JButton btn = new JButton("가입");

JTextField IDfield = new JTextField(10);
JTextField PWfield = new JTextField(10);
JTextField PWIDfield = new JTextField(10);
JTextField NAMEfield = new JTextField(10);
JTextField TELfield = new JTextField(10);

panel1.add(label);
panel2.add(ID);
panel2.add(IDfield);
panel2.add(IDbtn);
panel2.add(PW);
panel2.add(PWfield);
panel2.add(PWID);
panel2.add(PWIDfield);
panel2.add(NAME);
panel2.add(NAMEfield);
panel2.add(TEL);
panel2.add(TELfield);
panel2.add(btn);

Recruit.getContentPane().add(BorderLayout.NORTH, panel1);
Recruit.getContentPane().add(BorderLayout.CENTER, panel2);
Recruit.setTitle("회원가입");
Recruit.setBackground(Color.darkGray);
Recruit.setSize(500, 500);
Recruit.setVisible(true);
}
}

RoundRobin (160 포인트) 님이 2016년 5월 1일 질문

1개의 답변

0 추천
우선 전체적인 패널을 하나 두고

각 행마다 패널을 만들어서 하면 할 수 있습니다.

예를 들어 처음 회원가입 라벨이 패널1  두번째 아이디 라벨과 아이디 텍스트필트 아이디 버튼을 한 패널2 이런식으로 해서

패널1~ 7까지를  처음 만든 전체적인 패널에 넣으셔서 사용하시면 되요
creater (2,330 포인트) 님이 2016년 5월 1일 답변
전체적인 패널에 넣을때 어떻게 넣는지 잘 모르겠어요.
예를들어 Recruit.getContentPane().add(BorderLayout.CENTER, panel2);
여기에 패널이 1에서 7까지 있다고 할경우에, panel 2,3,4,5 넣어주는데
BorderLayout.center로 하면, 마지막껏만 실행이 되어서..
어떻게 해줘야할지 .. 개행이 되는것도 아니고 ㅠㅠ..
개행 한번 하려면 무조건 패널에다 넣어서 겹치지 않게 해주어야 하는데
어떻게 해줘야 할런지...
예를들어서 한 패널에, 아이디라벨과 아이디 텍스트필드를 넣었다고 할때
그 다음 패널을 붙여주면 바로 옆에 붙어져 버리게 되더라구요.
이걸 방지할수 있을만한 개행을 할수있게 도와주는 함수는 없나요?
어떤 방식으로 다음줄로 넘기는지 찾기가 너무 어렵네요 ㅠ ㅠ
totalpanel.setLayout(new GridLayout(7,1));
이런식으로 그리드를 쓰면 적절하지 않을까요 ?
현재 레이아웃에 대한 이해를 공부하고 계시지만
저는 실제 사용할때는 레이아웃 자체를 안주고
setBounds를 사용해 좌표로 배치했어요 그게 훨씬 제약이 적고 배치하는데는 편리했던거 같아요

물론 좌표를 일일이 줘야하지만요

자바스윙 레이아웃에 대해 검색해보시고 그에 맞게 쓰시면 될꺼같아요
해결했습니다 감사합니다.
...