PDA

View Full Version : سوال: روش ساخت کامپوننت در جاوا



spiderman200700
شنبه 05 آذر 1390, 13:58 عصر
سلام به همه ی دوستان گرامی.
من میخوام خودم یه کامپوننت توی جاوا بنویسم.
لطفا یکی راهنماییم کنه که کلیات کار چطوریه.
یعنی کلاسم از چه کلاسی باید ارث بری کنه و چه متدهایی حتما باید پیاده سازی بشه.
ممنون از همه.

lilashad
شنبه 05 آذر 1390, 21:40 عصر
باسلام
کلاس کامپوننت (بستهjava.awt) یک زیر کلاس از Object است که بسیاری از خصوصیات و رفتارهای مشترک اجزا GUIدر بسته های javax.swingو java.awtرا اعلان می کند.اکثر اجزا GUIاز کلاس کامپوننت به طور مستقیم یا غیر مستقیم به ارث می برند.برای یک فهرست کامل از این ویژگی های مشترک به



java.sun.com/j2ee/5.0/docs/apijava/awt/Component.html
مراجه کنید
کل اطلاعاتم برای کامپوننت بود

ashkanksh
شنبه 05 آذر 1390, 22:51 عصر
سلام

برای ساختن کامپوننت، یک class library می سازیم سپس یک package بعد یک panel و هر چیزی میخوایم داخلش میذاریم! از هر کامپوننت دیفالت جاوا که میخوایم استفاده میکنیم.

بعد build میکنیم. سپس از منوی tools از نوار بالا ، pallets-->swing را انتخاب و از انجا هر تعداد jar file که میخوایم انتخاب می کنیم.

البته مشکلی که هست کامپوننت هایی که ما روی panel اضافه کردیم، ویژگی هاش رو نمیتونیم عوض کنیم. برای این کار باید از خاصیت encapsulation استفاده کنیم. که اگر توضیح بیشتری نیاز هست بگید.

spiderman200700
شنبه 05 آذر 1390, 23:50 عصر
ممنون از شما دوستان گرامی.
جناب ashkanksh ، چطوری class library بسازم.
من وقتی کامپوننت های آماده ی جاوا رو بررسی میکردم،دیدم که همشون از کلاس Component ارث بری کردن، قضیه ی این چیه.تو این کاری که شما میگید انجام بدم،اینم لحاظ میشه؟
اگه یه کامپوننت آماده بسازید که هیچ اجزایی نداشته باشه و اینجا بذارید، کمک بزرگی بهم کردید.
ممنون از شما.

ashkanksh
یک شنبه 06 آذر 1390, 21:05 عصر
چجوری بذارم دوست من؟ آخه ی فایل جار هست که ادد میکنی به pallet! کار اصلی رو شما باید انجام بدی!

برای ساختن class library هم اگر با نت بینز کار میکنی موقعی که میخوای پروژکت جدید ایجاد کنی! یک قسمت داخل جاوا نوشته class library! از اونجا یک پروژکت از این بساز و بعد یه پنل بساز! بعد از ساختنش مسیری که گفتم رو برو! اگر هنوز هم متوجه نشدی عکس بگیرم قسمت قسمت آپلود کنم

برای مثال این سورس یک جار فایل هست که میتونیم به عنوان کامپوننت داخل یه فرم دیگه اضافش کنیم:


public class NewJPanel extends javax.swing.JPanel {

/** Creates new form NewJPanel */
public NewJPanel() {
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() {

jButton1 = new javax.swing.JButton();

jButton1.setText("jButton1");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(154, 154, 154)
.addComponent(jButton1)
.addContainerGap(173, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(47, 47, 47)
.addComponent(jButton1)
.addContainerGap(230, Short.MAX_VALUE))
);
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
// End of variables declaration
}


البته از نت بینز استفاده میکنیم برای ساختن کامپوننت! طریقه نوشتن کدش خیلی سخت میشه!

spiderman200700
یک شنبه 06 آذر 1390, 23:08 عصر
ممنون از شما.کاملا فهمیدم.

فقط اینکه،شما این جمله رو توی پست قبلیتون نوشتید:


البته مشکلی که هست کامپوننت هایی که ما روی panel اضافه کردیم، ویژگی هاش رو نمیتونیم عوض کنیم. برای این کار باید از خاصیت encapsulation استفاده کنیم. که اگر توضیح بیشتری نیاز هست بگید.

میشه در این مورد بیشتر توضیح بدید.منظورتون از این که "ویژگی هاش رو نمیتونیم عوض کنیم" چیه؟
و چطوری از encapsulation برای تغییر ویژگی های کاممپوننت استفاده کنیم؟

ممنون از شما.

ashkanksh
دوشنبه 07 آذر 1390, 06:04 صبح
ببین فرض کن روی پنل ما دو تا دکمه و چهار تا لیبل گذاشتیم و ...!

حالا جایی که اضافه میکنی، وقتی select اش میکنی میبینی همش با هم هست، واسه اینکه اینجوری نباشه! متغیر هات رو private بگیر، منظورم کامپوننت هاست! بعد متد ست و گت براش درست کن که بتونی از اونجا هم رنگ مثلا واسه پنلت درست کنی! یعنی متناسب با هر قسمت یه متد ست و گت باید درست کنی!

امیدوارم فهمیده باشی چیو میگم

spiderman200700
دوشنبه 07 آذر 1390, 17:59 عصر
آها.درسته.
من کلا حرفتونو یه جور دیگه فهمیده بودم.
حله.یعنی حل بود.
ممنون از توضیحاتتون.