[ java ] in KIDS 글 쓴 이(By): guest (guest) <165.132.68.4> 날 짜 (Date): 1999년 3월 8일 월요일 오후 11시 04분 54초 제 목(Title): 자바빈을 위해 사이즈 조절하려면? import java.awt.*; import java.awt.event.*; public class FrozenAWT implements ActionListener, ItemListener { //------------------------------------------------------------------- // FrozenAWT Constructor //------------------------------------------------------------------- public FrozenAWT() { Frame window = new Frame("Play with me.."); Button button= new Button("Click me.."); Label l= new Label("Feed me:"); TextField tf= new TextField("", 20); Checkbox cb1= new Checkbox("Select me!"); Checkbox cb2= new Checkbox("No! Select me!"); button.addActionListener(this); tf.addActionListener(this); cb1.addItemListener(this); cb2.addItemListener(this); window.setLayout(new FlowLayout()); window.add(button); window.add(l); window.add(tf); window.add(cb1); window.add(cb2); window.setSize(500,500); window.setVisible(true); } //------------------------------------------------------------------- // ActionListener interface method //------------------------------------------------------------------- public void actionPerformed(ActionEvent actionEvent) { Object source; source = actionEvent.getSource(); System.out.println("Received event from " + source); } //------------------------------------------------------------------- // ItemListener interface method //------------------------------------------------------------------- public void itemStateChanged(ItemEvent itemEvent) { Object source; source = itemEvent.getSource(); System.out.println("Received event from " + source); } //------------------------------------------------------------------- // main() entry point //------------------------------------------------------------------- public static void main (String[] args) { new FrozenAWT(); } } // End of Class FrozenAWT Mastering java beans 의 한 예제입니다. 컨스트럭터에 보면 프레임 사이즈 정하는게 있습니다. 저도 제 프로그램에서 프레임의 섭클래스 (메인 펑션도 여기있슴) .init()에 setSize(1200,1200);같은 펑션을 넣었습니다. System.out.println("Frame size (1)width"+this.getSize().width+"(2)height"+ this.getSize().height);하면 1200,1200으로 찍혀 나옵니다. 물론 메인펑션에선 init()를 실행시키고요. 그런데도 나오는 프레임사이즈는 영향을 전혀 받지 않고 제가 값을 설정해 주기전과 다름이 없습니다. 무엇이 문제일까요? 사용자가 버튼의 외곽을 마우스로 드래그하면 사이즈가 변하고 이것을 시리얼라이즈 시키고 싶습니다. 그러기 위해서는 버튼도 사이즈가 변하는 펑션(위의 셋사이즈같은 것)이 필요하다고 보는데 패널에선 잘 되는것같은데 버튼 클래스에도 그런 펑션이 있나요? 아니면 그런 테크닉을 구사할수 있는 방법은 있나요? 패널이나 캔버스에 버튼하나만 같은 사이즈로 add해서 실제로는 패널이나 캔버스 사이즈를 조정하는 테크닉이면 될거 같기도 한데요. 그리고 제 프로그램안에 class NC extends Panel { NC() { setSize(getPreferredSize());} public Dimension getPreferredSize() { return new Dimension(100,30); } } 하는 코드가 있는데요 컨스트럭터 안에 Dimension d = new Dimension(100,30); setSize(d.width,d.height);나 setSize(new Dimension(100,30));해도 될거 같은데 안 되거든요. 왜 그럴까요? 그럼 미리 감사. |