[완료] 자바 AWT/Swing 질문입니다.
글쓴이: GunSmoke / 작성시간: 수, 2009/02/11 - 1:05오전
입문서 보고 나서 직접 예제를 만들어보려고 했는데 일단 GUI부터 마음대로 제어하지 못해서 고생하고 있습니다. 쩝~
코드부터 보시죠.
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class Practice { private JFrame theFrame; private ArrayList textFieldList; private JPanel mainPanel; private String [] row = {"0", "10", "20", "30", "40", "50", "60", "70", "80", "90"}; private String [] col = {"90", "80", "70", "60", "50", "40", "30", "20", "10", "0"}; public void buildGUI() { theFrame = new JFrame("연습"); theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); BorderLayout layout = new BorderLayout(); JPanel background = new JPanel(layout); background.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); textFieldList = new ArrayList(); Box colName = new Box(BoxLayout.X_AXIS); colName.add(new Label()); for (int i = 0; i < 10; i++) { colName.add(new Label(col[i])); } Box rowName = new Box(BoxLayout.Y_AXIS); for (int i = 0; i < 10; i++) { rowName.add(new Label(row[i])); } background.add(BorderLayout.NORTH, colName); background.add(BorderLayout.WEST, rowName); theFrame.getContentPane().add(background); GridLayout grid = new GridLayout(10, 10); grid.setVgap(1); grid.setHgap(2); mainPanel = new JPanel(grid); background.add(BorderLayout.CENTER, mainPanel); for (int i = 0; i < 100; i++) { TextField c = new TextField(); textFieldList.add(c); mainPanel.add(c); } theFrame.setBounds(50, 50, 500, 500); theFrame.pack(); theFrame.setVisible(true); } public static void main (String [] args) { new Practice().buildGUI(); } }
이 예제의 실행 결과는 이렇습니다.
colName과 rowName이 각각 BorderLayout.NORTH와 BorderLayout.WEST로 지정되어 있기 때문에 윗쪽 Box와 왼쪽 아래 Box, 오른쪽 아래 mainPanel이 모두 따로 놀고 있습니다.
원하는 출력결과는 이렇게 윗쪽 Box와 왼쪽 아래 Box가 mainPanel을 기준으로 줄이 딱딱 맞아주는 건데 좋은 방법 없을까요?
Forums:
Label을 GridLayout (11 *
Label을 GridLayout (11 * 11)에 모두 넣으세요.
단 칼에 해결됩니다.
아직 해보지는
아직 해보지는 않았지만...
어젯밤에 테스트할때 이런 식으로 해봤거든요? GridLayout을 2*2로 줘서 오른쪽 위에 Label, 왼쪽 아래에 Label, 오른쪽 아래에 TextFiled를 넣으면 되겠다 싶었습니다. 그러니까... 결과가 이렇게 나와버리더군요.
그리고 Label을 TextField랑 섞어서 넣지 않으려는 이유는 ArrayList에서 따로 관리하고 싶어서 그렇습니다.
大逆戰
大逆戰
섞는다고..
섞는다고 어레이리스트에서 관리가 안되는건 아닐텐데요...
윗분 말대로 하시죠?
아니면
setLayout(null);
해준뒤에 픽셀단위로 세세하게 고치셔야 합니다..
즐자바
---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.
http://jihwankim.co.nr
여러 프로그램 소스들이 있습니다.
필요하신분은 받아가세요.
인용:그리고 Label을
고등학교 수학책에 나와 있는 수열 공부하면
for문으로 돌려서 배치하는 문제는 단칼에 해결됩니다.
단지 줄만 맞추고
단지 줄만 맞추고 싶으시다면
13번째 줄을
로 고치시고
26번째 줄을
로 바꾸면 될 듯 합니다.
결과 스크린 샷 첨부합니다.
--
말할 수 있는 것은 분명하게 말해질 수 있다;
말해질 수 없는 것에 대해서는 침묵해야한다.
논리철학논고 - 루드비히 비트겐슈타인
--
말할 수 있는 것은 분명하게 말해질 수 있다;
말해질 수 없는 것에 대해서는 침묵해야한다.
논리철학논고 - 루드비히 비트겐슈타인
답변
답변 감사드립니다.
자바 처음 시작하는데 정말 큰 도움이 되고 있습니다.
大逆戰
大逆戰
댓글 달기