관리 메뉴

nkdk의 세상

자바 Language 18일째 본문

My Programing/JAVA

자바 Language 18일째

nkdk 2008. 3. 8. 01:14
package Swing;

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

public class StartFrame extends JFrame {
private JPanel mainp;
public StartFrame() {
init(); // 초기화 작업을 해준다.
}
private void init() {
mainp=(JPanel)this.getContentPane(); // JFrame에 이미 얹었음
mainp.setLayout(new BorderLayout());
this.setSize(new Dimension(400,300));
initFrame(); // 화면에 가운데에 배치
}

public void addListener(){
// JFrame에 관련된 리스너가 있다면 여기서 처리하여라..
}

private void initFrame() {
Dimension monitorsize=Toolkit.getDefaultToolkit().getScreenSize(); // 모니터의 규격을 monitor 가 받는다.
Dimension framesize=this.getSize(); // 프레임의 사이즈를 받는다

if(framesize.height > monitorsize.height)
framesize.height = monitorsize.height;
if(framesize.width > monitorsize.width)
framesize.width = monitorsize.width;
int locX=(monitorsize.width - framesize.width)/2;
int locY=(monitorsize.height - framesize.height)/2;
this.setLocation(locX, locY);
this.setVisible(true);
}

public void processWindowEvent(WindowEvent e) {
// 윈도우 이벤트가 발생되면 자동적으로 프로세스 윈도우 이벤트가 발생된다.
super.processWindowEvent(e);
if(e.getID()==WindowEvent.WINDOW_CLOSING)
System.exit(0);
if(e.getID()==WindowEvent.WINDOW_STATE_CHANGED)
System.out.println("아아");
// 이렇게 종료 시킬 수 있다.
}

public void setMainJPanel(javax.swing.JComponent c) {
mainp.add(c);
}
}


package Swing;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.event.*;
import javax.swing.border.*; // 보더를 쓰기 위해 사용

public class TextPanel extends JPanel{
JPanel cp=new JPanel();
JButton btn=new JButton("Clear");
JTextArea txtA=new JTextArea(5,50);
JTextField txtF=new JTextField(60);
JScrollPane scrollpane=new JScrollPane();
public TextPanel() {
init();
}
public void init() {
this.setLayout(new BorderLayout());
this.add(btn,BorderLayout.EAST);
this.add(cp,BorderLayout.CENTER);
cp.setLayout(new BorderLayout());
cp.setBorder(new TitledBorder(""));
scrollpane.getViewport().add(txtA);
cp.add(scrollpane,"Center");
cp.add(txtF,"South");
txtA.setWrapStyleWord(true); // 단어에 관계없이 워드 랩 기능이 있음 오른쪽 끝을 만나면 다음칸으로 그냥 넘어가도록 하는 기능
txtA.setLineWrap(true);
txtA.setSelectedTextColor(new Color(255,250,0));

addListener(); // 리스너를 따로 만든다.
}

public void addListener() {
btn.addMouseListener(new MouseHandling());
// action 리스너를 써도 된다.
txtF.addKeyListener(new KeyHandlng());
}
public class KeyHandlng extends KeyAdapter{
public void keyPressed(KeyEvent e) {
if (e.getSource()==txtF) {
if(KeyEvent.VK_ENTER==e.getKeyCode()){
txtA.append(txtF.getText()+"\n"); // 값을 추가 시킨다.
txtF.setText("");
}
}
}

}
public class MouseHandling extends MouseAdapter{
public void mouseClicked(MouseEvent e) { // 버튼을 누르면 txtA의 내용을 지운다.
if(e.getSource()==btn) {
txtA.setText("");
}
}

}

}


package Swing;

public class StartPanelMain {

public static void main(String[] args) {
StartFrame frame=new StartFrame();
TextPanel tp=new TextPanel();

frame.setMainJPanel(tp);
frame.validate();
}
}


// 3개를 합치면 됩니다.