۱۳۸۹ شهریور ۱۳, شنبه

آموزش گام به گام جاوا : ۱


برای برنامه نویسی جاوا ابتدا باید

JDK

Java Development Kit

را نصب کنید.


برای شروع از ساده ترین برنامه

Hello, world

استفاده می کنیم و آن را واژه به واژه تفسیر می کنیم.

public class Hello {
public static void main(String args[]) {
System.out.println("Hello, world");
}
}



public

این یکی از کلید واژه های جاوا است که نوع دسترسی را اعلان می کند. این عبارت اعلان می کند که کلاس برای تمام برنامه قابل دسترسی است

برای اطلاعات بیشتر اینجا را نگاه کنید


class

همه چیز در جاوا (داده ها و متد ها ) در کلاس قرار می گیرند.

Class = data + methids

کلاس ها پیچیدگی برنامه را کاهش می دهند. نام شی برای هر نمونه از کلاس خلق شده اتخاذ شده و به این ایده برنامه نویسی شی گرا می گویند.

یک کلاس قالبی است که تعیین می کند یک شی چه ویژگی هایی می تواند داشته باشد.

برای اطلاعات بیشتر اینجا را نگاه کنید


Hello

نام کلاس در این برنامه Hello است. نام کلاس باید با حروف بزرگ شروع شود (این یک قرار داد است) بدنه کلاس در میان {} قرار می گیرد

برنامه فوق باید بصورت Hello.java ذخیره شود.


جمله ی

public static void main(String[] args)
یا
public static void main(String args[])


متد main نامیده می شود.

برای آشنایی با متد اینجا ، اینجا و اینجا را مطالعه کنید.
بعد از واژه public که توصیف شد به static می رسیم دو نوع متد وجود دارد
متد نمونه Instance methods که از به هم پیوستن یک شی و متغیر های نمونه آن شی بوجود می آیند که این حالت قراردادی آن است
و متد های استاتیک Static methods که از متغیر های نمونه هر شی داخل کلاس استفاده نمی کنند.
اگر یک متد را استاتیک تعیین کنید با این کار یک پیام به کامپایلر می دهید تا به هیج متغیر نمونه ای دسترسی نیابد. یک متد استاتیک معمولآ همه داده ها را از پارامتر ها می گیرد و مقادیری را
با استفاده از این
پارامتر ها بدون ارجاع به متغیر ها محاسبه می کند
برای اطلاعات بیشتر اینجا را مطالعه کنید

void
این واژه کلیدی جاوا نشان می دهد یک متد هیچ مقداری را بر نمی گرداند
دستور ًReturn برای متد های void اختیاری است

برای اطلاعات بیشتر اینجا را مطالعه کنید

main
در برنامه نویسی جاوا هر برنامه باید شامل این متد باشد

String args[]
پارامتری به نام args را تعریف می کند که آرایه ای از
نمونه های کلاس stringاست(هر آرایه مجموعه ای از
شی ء های مشابه است).شی ء های نوع string برای ذخیره
سازی رشته های کاراکتری هستند. [1]

استرینگ در واقع نوعی داده است
داده‌ها،مواد خام و اصلي برنامه نويس است كه آنها را
از راه‌هاي مختلفي به دست مي‌آورد. اين اطلاعات، از
انواع مختلفي هستند. بعضي حروف و كلمه،و بعضي اعداد
وارقام.

1- رشته‌ای (String): حروف و كلمه
2- عددی (Number): اعداد و ارقام (اعداد صحيح و اعشاری)
3- منطقی (Boolean): بله و خير[2]



System.out
سه نوع جریان I/O برای استفاده در کنسول از پیش تعریف شده
وجود دارد
System.in
System.out
System.err
اولی یک اینپوت استریم است
دومی پرینت استریم برای نوشتن در کنسول
و سومی نیز مانند بالا
در واقع System کلاسی در API جاواست که در پکیج java.lang قرار دارد

در پایان این برنامه عبارت زیر را در کنسول چاپ می کند.
Hello, world

برای کامپایل و اجرای این برنامه اینجا را نگاه کنید

۱۳۸۹ مرداد ۱۵, جمعه

درونمایه ( محتوای ) یک فایل MANIFEST.MF

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 16.3-b01 (Sun Microsystems Inc.)
SplashScreen-Image: images/farvahar1.png
Main-Class: components.Converter

ردیف چهارم قبل از اجرای برنامه یک عکس را نمایش می دهد.
ردیف پنجم کلاس converter را که در پکیج components قرار دارد را اجرا می کند.

۱۳۸۹ مرداد ۱۳, چهارشنبه

محاسبه حجم

یک کلاس با دو متد برای محاسبه حجم مکعب و استوانه

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package chem10;

import javax.swing.JOptionPane;

/**
*
* @author kian
*/
public class Calculate {

public static void cubeVolumeCalculate() throws NumberFormatException,NullPointerException{
String t = JOptionPane.showInputDialog("طول را وارد کن", null);
String a = JOptionPane.showInputDialog("عرض را وارد کن", null);
String e = JOptionPane.showInputDialog("ارتفاع را وارد کن", null);
double T = Double.parseDouble(t);
double A = Double.parseDouble(a);
double E = Double.parseDouble(e);
double V = T * A * E;
JOptionPane.showMessageDialog(null, "حجم " + V);
}

public static void cilandrVolumeCalculate() throws NumberFormatException,NullPointerException{
String h = JOptionPane.showInputDialog("ارتفاع", null);
String g = JOptionPane.showInputDialog("قطر را وارد کن", null);

double H = Double.parseDouble(h);
double G = Double.parseDouble(g);

double V = 0.785 * G * G * H;
JOptionPane.showMessageDialog(null, "حجم " + V);

}
}


یک فریم با دو دکمه برای آن که دو متد کلاس بالا را صدا بزند

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/*
* NewJFrame.java
*
* Created on Jun 28, 2010, 5:54:45 PM
*/
package chem10;

import javax.swing.JOptionPane;

/**
*
* @author kian
*/
public class NewJFrame extends javax.swing.JFrame {

/** Creates new form NewJFrame */
public NewJFrame() {
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")
// //GEN-BEGIN:initComponents
private void initComponents() {

jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jButton1.setText("حجم مکعب");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setText("حجم استوانه");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 259, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(27, 27, 27))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(36, 36, 36)
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2))
.addGroup(layout.createSequentialGroup()
.addGap(60, 60, 60)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(200, Short.MAX_VALUE))
);

pack();
}//
//GEN-END:initComponents

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
jLabel1.setText("Cube Volume");
try {
Calculate.cubeVolumeCalculate();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Incorect value, try again with right data");
}catch (NullPointerException ex) {
JOptionPane.showMessageDialog(null, "Enter data");
}
}//GEN-LAST:event_jButton1ActionPerformed

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
// TODO add your handling code here:
Calculate.cilandrVolumeCalculate();
}//GEN-LAST:event_jButton2ActionPerformed

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
// End of variables declaration//GEN-END:variables
}

۱۳۸۹ مرداد ۷, پنجشنبه

متد های پر کاربرد

تنظیم یک فونت برای لیبل یا هر چیز دیگر
setFont(new java.awt.Font("Tahoma", 1, 14));

تنظیم راست به چپ پارسی
setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

فریم را وسط پنجره باز می کند
setLocationRelativeTo(null);

ترانسپرانت می کند
setTransprancy(0.7);

ایجاد بردر
setBorder(BorderFactory.createTitledBorder("Choose Text Color"));

تنظیم فونت بردر
setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(null, myTitle, javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 16)),
BorderFactory.createEmptyBorder(5,5,5,5)));

تنظیم آیکون برای فریم
setIconImage
(Toolkit.getDefaultToolkit()
.getImage(getClass().
getResource("/images/adibicon.gif")));

یا

frame.setIconImage(
    new ImageIcon(
        YourApp.class.getResource("logo.png")
    ).getImage()
);
YourApp نام کلاس است

برای برداشتن نوار عنوان

setUndecorated(true);

۱۳۸۹ مرداد ۴, دوشنبه

استفاده از کمپوننت های swing

در لینک زیر جدولی شامل مثال ها یی از کمپوننت های swing می باشد.

لینک

۱۳۸۹ تیر ۱۵, سه‌شنبه

محاسبه حجم مکعب

package Calculate;

import javax.swing.JOptionPane;

/**
*
* @author kian
*/


public class Calculate {
private static void volumCalculate () {

String t = JOptionPane.showInputDialog( "طول را وارد کن", null);
String a = JOptionPane.showInputDialog( "عرض را وارد کن", null);
String e = JOptionPane.showInputDialog( "ارتفاع را وارد کن", null);
double T = Double.parseDouble(t);
double A = Double.parseDouble(a);
double E = Double.parseDouble(e);
double V = T*A*E;
JOptionPane.showMessageDialog(null, "حجم " +V);



}
public static void main (String [] args ){

volumCalculate() ;

}
}

۱۳۸۹ تیر ۱۲, شنبه

ساختن یک پنجره ساده با یک لیبل

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

// Create a simple GUI window
public class TopLevelWindow {

private static void createWindow() {

//Create and set up the window.
JFrame frame = new JFrame("Simple GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON _CLOSE);

JLabel textLabel = new JLabel("I'm a label in the window",SwingConstants.CENTER);
textLabel.setPreferredSize(new Dimension(300, 100));
frame.getContentPane().add(textLabel, BorderLayout.CENTER);

//Display the window.
frame.setLocationRelativeTo(null);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {

createWindow();

}
}

جزییات درسنامه نوشتن این برنامه را اینجا به زبان انگلیسی ببینید