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

التعامل مع الجدول

مغلق
بدأه eng_2007 في 29 يوليو 2005 · 4 رد · 528 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أنا بأتعامل مع البرامج الي بأبرمجها بإستخدام الجافا ورسم الفريمات عن طريق برنامج netbeans

المشكلة عندي لما بأعمل جدول ما بأعرف كيف أعمل أكشن معين على خليه في الجدول

يعني زي لو كتبت في خلية بدي بصير أكشن على الخليه إلي بجنبها أو ينكتب عليها شيئ

لو حد عنده معرفه في هاد الشئ ياريت يكون بexample بسيط لحتى أعرف أتعامل معه

جزاكم الله خيرا

#2

هل استخدمت TableModel?

هذه الفئة تستخدم لتخزين والتعامل مع البيانات التي في الجدول.. هذه الفئة هي التي تريد..وهي سهلة الاستخدام..

ربما يكون أسهل لك أن تستخدم الفئة التي ترث من السابقة وهي AbstractTableModel

خذ المثال:: وظيفته عرض جدول للجمع،،، ضع الأرقام في الخلايا في العمود الأول والثاني,,, وسيقوم بوضع المجموع في العمود الثالث... كما أنه سيجمع كل النتائج في آخر صف!!

import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
class MyMathModel extends AbstractTableModel{
	Vector myNumberData;
	public MyMathModel(){
  myNumberData=new Vector();
  prepareRows(10);
	}
	private void prepareRows(int rows){
  for(int i=0;i<rows;i++){
 	 myNumberData.add(new Data());
  }
	}
	private double getTotal(){
  Iterator t=myNumberData.iterator();
  double total=0;
  while(t.hasNext()){
 	 Data data=(Data)t.next();
 	 total += (data.first + data.second);
  }
  return total;
	}
	public boolean isCellEditable(int row, int col){
  if(row==myNumberData.size())return false;
  if(col==2)return false;
  return true;
	}
	public void setValueAt(Object o, int row, int col){
  if(row==myNumberData.size())return;
  Data data=(Data)myNumberData.get(row);
  switch(col){
 	 case 0:data.first=((Double)o).doubleValue();break;
 	 case 1:data.second=((Double)o).doubleValue();break;
  }
  /*This is to let listeners know that the model has been updated!
   *JTable is a listener.
   */
  this.fireTableDataChanged();
	}
	public Object getValueAt(int row, int col){
  if(row == myNumberData.size()){
 	 switch(col){
    case 0:case 1: return 0;
    case 2:return getTotal();
 	 }
  }else{
 	 Data data=(Data)myNumberData.get(row);
 	 switch(col){
    case 0 :return data.first;
    case 1 :return data.second;
    case 2 :return data.first+data.second;
 	 }
  }
  return 0;
	}
	public Class getColumnClass(int col){
  return Double.class;
	}
	public int getRowCount(){
  return myNumberData.size()+1;
	}
	public int getColumnCount(){
  return 3;
	}
	private class Data {
  double first, second;
	}
}

public class Test{
	public static void main(String []args){
  JTable table=new JTable(new MyMathModel());
  JFrame frame=new JFrame();
  frame.add(table);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.pack();
  frame.setVisible(true);
	}

}

بالتوفيق!!

#3

السلام عليكم

شكرا جزيلا عل الرد

عملت رن للكود اللي عرضته بس طلعلي إكسبشن :

)(Exception in thread "main" java.lang.Error: Do not use javax.swing.JFrame.add

use javax.swing.JFrame.getContentPane().add() instead

)at javax.swing.JFrame.createRootPaneException(JFrame.java:458

)at javax.swing.JFrame.addImpl(JFrame.java:484

)at java.awt.Container.add(Container.java:307

)at MyMathModel.main(MyMathModel.java:91

صراحة أنا شفت الكود ولقيته غريب شوي متى بيتم إستدعاء الفنكشن الموجودة في الكود؟؟؟؟

هل بيتم عمليه الجمع بعد عمليه معينه؟؟؟

أنا يمكن كترت أسئلة بس أنا هاد المنتدي بيساعدني كتير وبالنهايه جزاكم الله خيرا

#4

آسف، أنا استخدمت إمكانيات الإصدار الأخير من الجافا. وهو جافا 5

غير الجملة هذه في الشفرة: main()

frame.add(table);

change to

frame.getContentPane().add(table);

بالتوفيق..

#5

شكراً جزيلاً لك أخي أبو مازن على مسادتك لأعضاء المنتدى

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

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

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