Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > Java Programming > Java Forum > Java GUI - ขอปรึกษาโปรเจคหน่อยครับ ของผมเป็นโปรเจคที่ทำไม่ยากมาก



 

Java GUI - ขอปรึกษาโปรเจคหน่อยครับ ของผมเป็นโปรเจคที่ทำไม่ยากมาก

 



Topic : 116865



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์




Code (Java)
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package authentication;

import java.awt.event.*;
import javax.swing.*;
import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.JTextField;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import java.security.*;
/**
 *
 * @author Kiattisak-Petvisoot
 */
public class register extends javax.swing.JFrame {

    /**
     * Creates new form register
     */
    public register() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        lb_register = new javax.swing.JLabel();
        lb_username = new javax.swing.JLabel();
        lb_password = new javax.swing.JLabel();
        lb_confirm = new javax.swing.JLabel();
        lb_name = new javax.swing.JLabel();
        lb_address = new javax.swing.JLabel();
        lb_email = new javax.swing.JLabel();
        lb_mobile = new javax.swing.JLabel();
        txt_username = new javax.swing.JTextField();
        txt_password = new javax.swing.JPasswordField();
        txt_confirm = new javax.swing.JPasswordField();
        txt_name = new javax.swing.JTextField();
        txt_email = new javax.swing.JTextField();
        txt_mobile = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        txt_address = new javax.swing.JTextArea();
        bt_register = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("New Register");

        lb_register.setFont(new java.awt.Font("Malayalam MN", 0, 24)); // NOI18N
        lb_register.setText("New Register");

        lb_username.setText("Username :");

        lb_password.setText("Password :");

        lb_confirm.setText("Confirm Password :");

        lb_name.setText("Name :");

        lb_address.setText("Address :");

        lb_email.setText("E-mail :");

        lb_mobile.setText("Mobile :");

        txt_username.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txt_usernameActionPerformed(evt);
            }
        });

        txt_address.setColumns(20);
        txt_address.setRows(5);
        jScrollPane1.setViewportView(txt_address);

        bt_register.setText("Sign up");
        bt_register.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_registerActionPerformed(evt);
            }
        });

        jButton1.setText("Cancle");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(45, 45, 45)
                        .addComponent(lb_register))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(16, 16, 16)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lb_confirm)
                            .addComponent(lb_password)
                            .addComponent(lb_username)
                            .addComponent(lb_name)
                            .addComponent(lb_address)
                            .addComponent(lb_email)
                            .addComponent(lb_mobile))
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(bt_register)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jButton1))
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(jScrollPane1)
                                .addComponent(txt_username)
                                .addComponent(txt_password)
                                .addComponent(txt_confirm)
                                .addComponent(txt_name)
                                .addComponent(txt_email)
                                .addComponent(txt_mobile)))))
                .addContainerGap(19, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(29, 29, 29)
                .addComponent(lb_register)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lb_username)
                    .addComponent(txt_username, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lb_password)
                    .addComponent(txt_password, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lb_confirm)
                    .addComponent(txt_confirm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(28, 28, 28)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lb_name)
                    .addComponent(txt_name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(lb_address)
                        .addGap(78, 78, 78)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(lb_email)
                            .addComponent(txt_email, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txt_mobile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lb_mobile))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(bt_register)
                    .addComponent(jButton1))
                .addGap(16, 16, 16))
        );

        pack();
    }// </editor-fold>                        

    private void bt_registerActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // เช็คเงื่อนไข
        
        String username = new String(txt_username.getText());
        String password = new String(txt_password.getPassword());
        String confirm = new String(txt_confirm.getPassword());
        String name = new String(txt_name.getText());
        String address = new String(txt_address.getText());
        String email = new String(txt_email.getText());
        String mobile = new String(txt_mobile.getText());
        
        
        if (username.equals("")) {
            JOptionPane.showMessageDialog(null, "Please,enter Username");
        } else if (password.equals("")) {
            JOptionPane.showMessageDialog(null, "Please,enter Password");
        } else if (confirm.equals("")) {
            JOptionPane.showMessageDialog(null, "Please,enter Confirm Password");
        } else if (name.equals("")) {
            JOptionPane.showMessageDialog(null, "Please,enter Name");
        } else if (address.equals("")) {
            JOptionPane.showMessageDialog(null, "Please,enter Adress");
        } else if (email.equals("")) {
            JOptionPane.showMessageDialog(null, "Please,enter Email");
        } else if (mobile.equals("")){
            JOptionPane.showMessageDialog(null, "Please,enter Mobile and 10 characters");
        } else {
            // เพิ่มข้อมูลลงฐานข้อมูล
            Connection connect = null;
            Statement s = null;

            try {
                Class.forName("com.mysql.jdbc.Driver");

                connect = DriverManager.getConnection(""
                        + "jdbc:mysql://localhost:8889/project"
                        + "?user=root&password=1234");

                s = connect.createStatement();
                
                // SQL Insert
                String sql = "INSERT INTO authentication "
                        + "(username,password,name,address,email,mobile) "
                        + "VALUES ('" + username + "','"
                        + password + "','"
                        + name + "'" + ",'"
                        + address + "','"
                        + email + "','"
                        + mobile + "') ";
                s.execute(sql);

                // Reset Text Fields
                txt_username.setText("");
                txt_password.setText("");
                txt_confirm.setText("");
                txt_name.setText("");
                txt_address.setText("");
                txt_email.setText("");
                txt_mobile.setText("");

                JOptionPane.showMessageDialog(null,
                        "Record Inserted Successfully");

            } catch (Exception e) {
                // TODO Auto-generated catch block
                JOptionPane.showMessageDialog(null, e.getMessage());
                e.printStackTrace();
            }

            try {
                if (s != null) {
                    s.close();
                    connect.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                System.out.println(e.getMessage());
                e.printStackTrace();
            }
        }

    }                                           

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        int n = JOptionPane.showConfirmDialog(null, "Exit ?", "Would you want to exit?", JOptionPane.YES_NO_OPTION);
        if (n == JOptionPane.YES_OPTION) {
            System.exit(n);
        } else {
            System.out.print(n); // Use n for response
        }

    }                                        

    private void txt_usernameActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // เช็ค username ว่าว่างหรือไม่
    }                                            

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(register.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(register.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(register.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(register.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new register().setVisible(true);
            }
        });
    }


    // Variables declaration - do not modify                     
    private javax.swing.JButton bt_register;
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lb_address;
    private javax.swing.JLabel lb_confirm;
    private javax.swing.JLabel lb_email;
    private javax.swing.JLabel lb_mobile;
    private javax.swing.JLabel lb_name;
    private javax.swing.JLabel lb_password;
    private javax.swing.JLabel lb_register;
    private javax.swing.JLabel lb_username;
    private javax.swing.JTextArea txt_address;
    private javax.swing.JPasswordField txt_confirm;
    private javax.swing.JTextField txt_email;
    private javax.swing.JTextField txt_mobile;
    private javax.swing.JTextField txt_name;
    private javax.swing.JPasswordField txt_password;
    private javax.swing.JTextField txt_username;
    // End of variables declaration                   
}




จาก code ข้างต้นน่ะครับ ผมต้องการที่จะทำดังนี้ แต่ไม่ได้ก็ไม่เป็นไรครับ ผมได้ศึกษาจากหลายๆที่แล้วน่ะครับ จนมาถึงสิ่งที่ผมจะทำต่อแล้วมันติดขัดไปไม่ถูกหรือเป็นเพราะบางทีอาจจไม่เก่งภาษาอังกฤษน่ะครับ รบกวนด้วยน่ะครับ

1 ผมต้องการให้ข้อมูลที่จะเข้าสู่ mysql ถูกเข้ารหัสน่ะครับ (อาจจะเป็น md5 sha1 หรืออะไรก็ได้ครับ ขอตัวอย่าง)
2 ผมยังไม่สามารถที่จะบันทึกให้เป็นภาษาไทยได้ เมื่อบันทึกเป็นภาษาไทย พบว่า เป็นภาษา ????
3 ผมไม่สามารถทำการเปลี่ยนเทียบระหว่าง password 2 ช่องได้ครับ ว่าตรงกันหรือไม่

รบกวนขอแนวทางด้วยน่ะครับ ขอบคุณล้วงหน้าครับ
ภาพประกอบนิดหน่อย

หฟ



Tag : Java, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-06-01 18:20:35 By : illmndraft View : 3028 Reply : 7
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

1. MD5 ใช้ MD5 หาได้ไม่ยาก

Code (Java)
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
public class MD5 {
    public static String getMD5(String input) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] messageDigest = md.digest(input.getBytes());
            BigInteger number = new BigInteger(1, messageDigest);
            String hashtext = number.toString(16);
            // Now we need to zero pad it if you actually want the full 32 chars.
            while (hashtext.length() < 32) {
                hashtext = "0" + hashtext;
            }
            return hashtext;
        }
        catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
 
    public static void main(String[] args) throws NoSuchAlgorithmException {
        System.out.println(getMD5("Javarmi.com"));
    }
}


2. ภาษาไทย กำหนด Collation เป็น UTF-8 และเพิ่ม Charset ด้วย

Code
jdbc:mysql://localhost/some_db?useUnicode=yes&characterEncoding=UTF-8


3. จะต้องใช้ .String.equals()








ประวัติการแก้ไข
2015-06-05 09:06:15
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-06-02 09:41:07 By : mr.win
 


 

No. 2



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากครับ ผมจะลองศึกษาทำดูน่ะครับ หากมีข้อสงสัยผมจะเข้ามาเม้นถามเพื่อความกระจ่างน่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-06-02 11:52:36 By : illmndraft
 

 

No. 3



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ข้อที่ 1 และ 2 ทำได้แล้วครับ แต่ข้อที่ 3 ยังทำไม่ได้เลยครับ ไม่ค่อยเข้าใจ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-06-02 15:20:26 By : illmndraft
 


 

No. 4



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : illmndraft เมื่อวันที่ 2015-06-02 11:52:36
รายละเอียดของการตอบ ::
Code
if (pass1.equals(repass1)) { repass2 = pass.getText(); } else { JOptionPane.showMessageDialog(null, "กรุณากรอกรหัสให้ตรงกัน"); return; }

ผิดพลาดประการใดข้ออภัยด้วยน้ะครับ ^ ^

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-06-02 15:37:33 By : theerat56
 


 

No. 5



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : theerat56 เมื่อวันที่ 2015-06-02 15:37:33
รายละเอียดของการตอบ ::
ไม่ค่อยเข้าใจเท่าไรครับ รบกวนอธิบายเพิ่มนิดหน่อย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-06-02 17:36:44 By : illmndraft
 


 

No. 6



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : illmndraft เมื่อวันที่ 2015-06-02 17:36:44
รายละเอียดของการตอบ ::
Code
String pass1 = pass.getText(); << เก็บข้อมูล password ช่องแรก String pass2 = repass.getText(); << เก็บข้อมูล repassword if (pass1.equals(repass1)) { << เอาตัวแปล 2 ตัวมาเปรียบเทียบกันโดยใช้ equals ถ้าเหมือนกันให้เก็บใส่ตัวแปล ...... ว่าไป }else{ ถ้าไม่ใช่ JOptionPane............. <<< แสดง output ว่า 2 ค่าที่ใส่ไม่ไม่ตรงกัน }


ลองดูครับๆ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-06-05 07:53:50 By : theerat56
 


 

No. 7



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : theerat56 เมื่อวันที่ 2015-06-05 07:53:50
รายละเอียดของการตอบ ::
ขอบคุณมากครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-06-05 12:06:39 By : illmndraft
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Java GUI - ขอปรึกษาโปรเจคหน่อยครับ ของผมเป็นโปรเจคที่ทำไม่ยากมาก
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่