الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اضافة سطر ديناميكياً في الجي تيبل ، ، ،

مغلق
بدأه زائر في 17 مايو 2006 · 6 رد · 398 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أخواني اريد ان ادخل بيانات في الجي تيبل ولكن أريد الاسطر أن تكون ديناميكيه بحيث إذا المستخدم بدا يكتب في السطر الأخير

يأتي سطر جديد اتوماتيكياً بدون ضغط زر ، ،

هل أستطيع ذلك ؟؟؟

#2

أضم صوتي لصوتك ..

حاولت كثيرا لكن دون جدوى ..

#3

انا بحثت في الانترنت وفي المواقع ولم اجد هذه الخاصيه

اخي دكتور سيسكو هل رايت مثال على هذه الخاصيه ؟

#4

TableModel،،

اعمل تصميم حسب رغباتك بتطوير TableModel مناسب..

وللسهولة استخدم AbstractTableModel...

وإن أردت أمثلة توجيهية ابحث في المنتدى عن هذين الفئتين. طبعا عليك عمل ما يلزم لتنفيذ الشيء الذي تريد.

بالتوفيق!

#5

تشعبات ال JTable تضيع التفكير

حاولت تنفيذ الفكره باستخدام AbstractTableModel

وكانت محاولتي باضافة الشرط التالي

		sAbstractTableModel.addTableModelListener(new TableModelListener(){
			public void tableChanged(TableModelEvent e){
				if(e.getType()==e.UPDATE){
					// ---
				}
			}
		});

هل انا علي الطريق الصحيح ؟

* علما بان هنا مشكله في الصنف sAbstractTableModel ، وهي اني لم استطع تحرير خلايا الجدول . هل احتاج الى اضافه امر معين لأتمكن من التحرير؟ .

وشكرا جزيلا

11_03_06_12_48_57_1142110137Image(_66).jpg

#6

حسنا،، سأضع مثالا، لكني كنت أحب أن أعرف نوع البيانات التي تحب وضعها في الجدول،، هل هي بيانات أشخاص مثلا، وكل صف يحوي بيانات شخص واحد؟

عموما هذا مثال صغير:

هذه الفئة ترث من AbstractTableModel وظيفتها حفظ بيانات الأشخاص في List أو قائمة تزيد فقط،، وبها خدمة إضافة سطر جديد حسب الحاجة،، لاحظ أن كل صف عبارة عن Person

package edu.hussam.tableExample;

import javax.swing.table.*;
import java.util.*;

public class MySpecialTableModel extends AbstractTableModel{
	List<Person> persons;
	public MySpecialTableModel(){
		persons=new ArrayList<Person>();
	}
	public Class getColumnClass(int c){
		switch(c){
			case 0:return Integer.class;
			case 1:return String.class;
			case 2:return String.class;
		}
		return String.class;
	}
	public Object getValueAt(int r, int c){
		if(r>=persons.size())return null;
		Person person=persons.get(r);
		switch(c){
			case 0:return person.getID();
			case 1:return person.getName();
			case 2:return person.getAddress();
			default:return "nothing";
		}

	}
	public boolean isCellEditable(int r, int c){
		return true;
	}
	public void setValueAt(Object o, int r, int c){
		if(r>=persons.size()){
			Person p=new Person();
			persons.add(p);
			setValueAt(o, r, c);
		}else{
			Person person=persons.get(r);
			switch(c){
				case 0:person.setID(((Integer)o).intValue());break;
				case 1:person.setName(o.toString());break;
				case 2:person.setAddress(o.toString());break;
				default:
			}
		}
	}

	public int getRowCount(){
		return persons.size()+1;
	}
	public int getColumnCount(){
		return 3;
	}

}

الفئات بالأسفل هي فئات تشغيلية فقط الفئة Person و Main لتجربة البرنامج:

package edu.hussam.tableExample;



public class Person{
	String name, address;
	int id;
	public Person(int id, String name, String add){
		this.name=name;
		this.address=add;
		this.id=id;
	}
	public Person(){
		this(0,"", "");
	}
	public void setID(int id){
		this.id=id;
	}
	public int getID(){
		return id;
	}
	public void setName(String n){
		name=n;
	}
	public String getName(){
		return name;
	}
	public String getAddress(){
		return address;
	}
	public void setAddress(String add){
		address=add;
	}
}

وهذه لتجربة البرنامج:

package edu.hussam.tableExample;
import javax.swing.*;
import javax.swing.event.*;

public class Main{
	public static void main(String[]args){
		JFrame f=new JFrame("Table Test");
		JTable t=new JTable(new MySpecialTableModel());
		JScrollPane p=new JScrollPane(t);
		f.add(p);
		f.pack();
		f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
		f.setVisible(true);

	}
}

بالتوفيق!

#7

ابو مازن شكرا جزيلا لك وسأجرب ماكتبت وأخبرك

دمت بود وجزاك الله كل خير

هذا الموضوع مغلق.

مواضيع مشابهة