반응형
import java.awt.*;

public class awtex2 {
    public static void main(String args[]){
        Frame f = new Frame("Pulldown Menu");
        MenuBar mb = new MenuBar();

        Menu m = new Menu("Menu1");
        m.add(new MenuItem("MenuItem1"));

        Menu sm = new Menu("SubMenu1");
        sm.add(new MenuItem("SubmenuItem1"));
        sm.add(new MenuItem("SubmenuItem2"));

        m.add(sm);
        m.add(new MenuItem("MenuItem2"));

        mb.add(m);

        f.setMenuBar(mb);
        f.setSize(200, 200);
        f.setBackground(Color.WHITE);
        f.setVisible(true);
    }
}
반응형

'Programming > Java_Etc' 카테고리의 다른 글

AWT Study - FileDialog 사용하기  (2) 2020.02.11
AWT Study - 팝업메뉴  (0) 2020.02.11
AWT Study - Window & Frame  (0) 2020.02.11
Java 막대 그래프 그리기2  (0) 2020.02.08
Database Connection - DBConnection.java  (0) 2020.01.29
반응형

AWT가 오래된 것인줄만 알았는데 우리 회사에서 아직도 쓰고 있습니다. 그런데 생각해보니까, 오래된 소스도 최신 컴퓨터에서도 잘 돌아가고, 별도 설치도 필요 없고, 호환 잘 되는게 좋은 것 같습니다. Visual Basic으로 짜여진 프로그램도 있는데, 유지보수가 너무 힘드네요...항상 가상XP를 깔고 배포도 엄청 복잡해요.

그래서 결론은 다시 AWT! 기초부터 차근차근 공부해 보도록 하겠습니다. 우선 Window와 Frame 만들기 예제

import java.awt.*;

public class awtex {
    public static void main(String args[]){
        Frame f = new Frame("Frame");
        f.setSize(500, 400);
        f.setBackground(Color.white);
        f.setVisible(true);

        Window w = new Window(f){
            public void paint (Graphics g){
                g.drawString("Window", 10, 50);
            }
        };
        Rectangle r = new Rectangle(50, 50, 100, 100);
        w.setBounds(r);
        w.setBackground(Color.yellow);
        w.setVisible(true);
        w.toFront();

    }
}

윈도우는 테두리와 메뉴바를 갖지 않는 그냥 컨테이너인데 반해 Frame은 테두리와 메뉴바를 가질 수 있으며, 

둘 다 BorderLayout을 사용하여 레이아웃을 설정합니다.

반응형

'Programming > Java_Etc' 카테고리의 다른 글

AWT Study - 팝업메뉴  (0) 2020.02.11
AWT Study - 메뉴 생성  (0) 2020.02.11
Java 막대 그래프 그리기2  (0) 2020.02.08
Database Connection - DBConnection.java  (0) 2020.01.29
Database Connection - OracleTest.java  (0) 2020.01.29
반응형

막대 그래프 그리는 코드로 이것 저것 고쳐가며 실습을 해본 기록을 남깁니다.

아직 이해가 덜된 부분도 있습니다. 아래 Listener부분... 계속 공부해야죠~

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

public class bargraph
{
    public static void main(String args[])
    {
        JFrame frame = new JFrame("Program Language School");
        frame.setLocation(500,200);
        frame.setPreferredSize(new Dimension(400,350));
        Container contentPane = frame.getContentPane();

        DrawingPanel drawingPanel = new DrawingPanel();
        contentPane.add(drawingPanel, BorderLayout.CENTER);
        //그래프를 그릴 패널

        JPanel controlPanel = new JPanel();
        JTextField text1 = new JTextField(3);
        JTextField text2 = new JTextField(3);
        JTextField text3 = new JTextField(3);
        JButton button = new JButton("Show");
        controlPanel.add(new JLabel("Java"));
        controlPanel.add(text1);
        controlPanel.add(new JLabel("Python"));
        controlPanel.add(text2);
        controlPanel.add(new JLabel("C#"));
        controlPanel.add(text3);
        controlPanel.add(button);
        contentPane.add(controlPanel, BorderLayout.SOUTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        button.addActionListener(new DrawActionListener(text1,text2,text3,drawingPanel));
        //"그래프 그리기" 버튼을 눌렀을때 작동 할 리스터등록
        frame.pack();
        frame.setVisible(true);
    }
}

//그래프를 그리는 패널 클래스
class DrawingPanel extends JPanel
{
    int score_java, score_python, score_cs;
    public void paint(Graphics g){
        g.clearRect(0,0,getWidth(),getHeight());
        g.drawLine(50,250,350,250);
        for(int cnt = 1 ;cnt<11;cnt++)
        {
            g.drawString(cnt *10 +"",25,255-20*cnt);
            g.drawLine(50, 250-20*cnt, 350,250-20*cnt);
        }
        g.drawLine(50,20,50,250);
        g.drawString("Java",100,270);
        g.drawString("Python",200,270);
        g.drawString("C#",300,270);
        g.setColor(Color.BLUE);
        if (score_java>0)
            g.fillRect(110,250-score_java*2,10,score_java*2);
        if(score_python>0)
            g.fillRect(210,250-score_python*2,10,score_python*2);
        if(score_cs>0)
            g.fillRect(310,250-score_cs*2,10,score_cs*2);
    }
    void setScores(int score_java, int score_python, int score_cs)
    {
        this.score_java=score_java;
        this.score_python=score_python;
        this.score_cs=score_cs;
    }
}

//버튼 눌렀을때 동작하는 리스너
class DrawActionListener implements ActionListener
{
    JTextField text1,text2,text3;
    DrawingPanel drawingPanel;
    DrawActionListener(JTextField text1, JTextField text2, JTextField text3, DrawingPanel drawingPanel)
    {
        this.text1=text1;
        this.text2=text2;
        this.text3=text3;
        this.drawingPanel = drawingPanel;
    }
    public void actionPerformed(ActionEvent e)
    {
        try
        {
            int korean = Integer.parseInt(text1.getText());
            int english = Integer.parseInt(text2.getText());
            int math = Integer.parseInt(text3.getText());
            drawingPanel.setScores(korean, english, math);
            drawingPanel.repaint();
        }
        catch (NumberFormatException nfe){
            JOptionPane.showMessageDialog(drawingPanel,"잘못된 숫자 입력입니다","에러메시지",JOptionPane.ERROR_MESSAGE);
        }
    }
}
반응형

'Programming > Java_Etc' 카테고리의 다른 글

AWT Study - 팝업메뉴  (0) 2020.02.11
AWT Study - 메뉴 생성  (0) 2020.02.11
AWT Study - Window & Frame  (0) 2020.02.11
Database Connection - DBConnection.java  (0) 2020.01.29
Database Connection - OracleTest.java  (0) 2020.01.29
반응형

자바로 데이터베이스 연결 프로그램 구현 시, DB연결부 구현파일입니다.

 

package DB;
import java.sql.*;

public class DBConnection
{
  public static Connection dbConn;
  public static Connection getConnection() 
  {
    Connection conn = null;
    try{
        String user="abcd";
        String pw="********";
        String url="jdbc:oracle:thin:@zxcv.dothome.co.kr:1521:odbc";
        //이렇게 해야 연결이 된다. C#과 차이
        Class.forName("oracle.jdbc.driver.OracleDriver");
        System.out.println("driver load success");
        conn=DriverManager.getConnection(url,user,pw);
        System.out.println("DBConnectsuccess");
    }catch(ClassNotFoundExceptioncnfe){
        System.out.println("DB드라이버로딩실패:"+cnfe.toString());
    }catch(SQLExceptionsqle){
        System.out.println("DB접속실패:"+sqle.toString());
    }catch(Exceptione){
        System.out.println("Unkonwn error");
        e.printStackTrace();
    }
    return conn;
  }
}

 

반응형

'Programming > Java_Etc' 카테고리의 다른 글

AWT Study - 팝업메뉴  (0) 2020.02.11
AWT Study - 메뉴 생성  (0) 2020.02.11
AWT Study - Window & Frame  (0) 2020.02.11
Java 막대 그래프 그리기2  (0) 2020.02.08
Database Connection - OracleTest.java  (0) 2020.01.29
반응형

1. DBConnection.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 
public class DBConnection 
{
    public static Connection dbConn;
    
    public static Connection getConnection()
    {
      Connection conn = null;
      try {
        String user = "scott"; 
        String pw = "tiger";
        String url = "jdbc:oracle:thin:@localhost:1521:orcl";

        Class.forName("oracle.jdbc.driver.OracleDriver");        
        conn = DriverManager.getConnection(url, user, pw);

        System.out.println("Database에 연결되었습니다.\n");

      } catch (ClassNotFoundException cnfe) {
          System.out.println("DB 드라이버 로딩 실패 :"+cnfe.toString());
      } catch (SQLException sqle) {
          System.out.println("DB 접속실패 : "+sqle.toString());
      } catch (Exception e) {
          System.out.println("Unkonwn error");
          e.printStackTrace();
      }
    return conn;     
    }
}

 

2. DB 데이터추출 구현부

package DB;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class OracleTest
{
    public static void main(String args[])
    {
        Connection conn = null; // DB연결된 상태(세션)을 담은 객체
        PreparedStatement pstm = null; // SQL 문을 나타내는 객체
        ResultSet rs = null; // 쿼리문을 날린것에 대한 반환값을 담을 객체
        
        try {
          // SQL 문장을 만들고 만약 문장이 질의어(SELECT문)라면
          // 그 결과를 담을 ResulSet 객체를 준비한 후 실행시킨다.
          String quary = "SELECT * FROM (select * from TEMP order by empno) where rownum<=10";
          //String quary = "SELECT * FROM (select * from TEMP order by EMP_#) fetch first 100 rows only";
          conn = DBConnection.getConnection();
          pstm = conn.prepareStatement(quary);
          rs = pstm.executeQuery();
          System.out.println("EMPNO EMP_X KoreanName HanmunName CommonNumber");
          System.out.println("============================================");

          while(rs.next()){
              String empno = rs.getString(1);
              int emp_x = rs.getInt(2);
              String Korean_name = rs.getString(3);
              String Han_name = rs.getString(4);
              int comm = rs.getInt("RES_#1");
              //java.sql.Date hiredate = rs.getDate(5); // Date 타입 처리
              String result = empno+" "+emp_x+" "+Korean_name+" "+Han_name+" "+comm;
              //                      직원번호       구분           한글이름             한문이름        주민번호
              System.out.println(result);
           }
           
        } catch (SQLException sqle) {
        	System.out.println("SELECT문에서 예외 발생");
        	sqle.printStackTrace();
            
        }finally{
        // DB 연결을 종료한다.
            try{
                if ( rs != null ){rs.close();}
                if ( pstm != null ){pstm.close();}
                if ( conn != null ){conn.close(); }
                
            }catch(Exception e){
            	throw new RuntimeException(e.getMessage());
            }
        }
    }
}

 

반응형

'Programming > Java_Etc' 카테고리의 다른 글

AWT Study - 팝업메뉴  (0) 2020.02.11
AWT Study - 메뉴 생성  (0) 2020.02.11
AWT Study - Window & Frame  (0) 2020.02.11
Java 막대 그래프 그리기2  (0) 2020.02.08
Database Connection - DBConnection.java  (0) 2020.01.29

+ Recent posts