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

إدخال JComboBox في خلية محددة في JTable

بدأه mohammeding في 16 مارس 2011 · 6 رد · 445 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي سؤال عن كيفية إدخال JComboBox في خلية محددة في JTable

كتبت هذا الكود لكن لم يفعل شئ

public class table_place 
{
    DefaultTableModel model;
    public final JComboBox comboBox;
    table_place(JTable jtable)
    {
        Object[][] data = { { "name", "", },{ "type", "", } };
        String[] columnNames = { "Propriétés", "Valeur"};
        ListSelectionModel selectionModel = new DefaultListSelectionModel();
        selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         comboBox = new JComboBox();
         comboBox.addItem("Colset");
         comboBox.addItem("Variable");
         jtable.setModel(new DefaultTableModel(data, columnNames){
          @Override
            public boolean isCellEditable(int row, int column) {
            if (column == 0) {
                    return false;
                } else
                    return true;
                    }
            public Component getTableCellEditorComponent (JTable table, Object value,
                    boolean isSelected, int row, int column) {
                           if (column==1 && row==1)
                           {
                               return comboBox;
                           }
                           else
                           {
                               return comboBox;
                           }
                    }
                });
    }


}

و شكرا

#2

تفضل

import javax.swing.DefaultCellEditor;
import javax.swing.DefaultListSelectionModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Mahmoud Kelany
 */
public class table_place extends JTable {

	DefaultTableModel model;
	public final JComboBox comboBox;

	table_place() {
    	Object[][] data = {{"name", "",}, {"type", "",}};
    	String[] columnNames = {"Propriétés", "Valeur"};
    	ListSelectionModel selectionModle = new DefaultListSelectionModel();
    	selectionModle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    	comboBox = new JComboBox();
    	comboBox.addItem("Colset");
    	comboBox.addItem("Variable");
    	setModel(new DefaultTableModel(data, columnNames));
    	getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(comboBox));
	}

	public static void main(String[] args) {
    	table_place table = new table_place();
    	JFrame f = new JFrame();
    	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	f.setSize(500, 500);
    	f.setVisible(true);
    	f.add(table);
	}
}

ويمكنك الاطلاع على هذا الرابط لمزيد من المعلومات عن الجداول

http://download.oracle.com/javase/tutorial/uiswing/components/table.html

Software Developer
Mahmoudkelany.com


 

#3

بارك الله فيك أخ Mahmoud Kelany

ولكن الحل يطبق عل كل خلايا العمود 1

ولكن مشكلتي في خلية محددة مثلا عمود 1 و سطر 1 في نفس الوقت

#4
mohammeding كتب:

بارك الله فيك أخ Mahmoud Kelany

ولكن الحل يطبق عل كل خلايا العمود 1

ولكن مشكلتي في خلية محددة مثلا عمود 1 و سطر 1 في نفس الوقت

الموضوع سهل ويمكنك عمل ذلك بسهوله

تفضل

import javax.swing.DefaultCellEditor;
import javax.swing.DefaultListSelectionModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Mahmoud Kelany
 */
public class table_place extends JTable {

	DefaultTableModel model;
	public final JComboBox comboBox;

	table_place() {
    	Object[][] data = {{"name", "",}, {"type", "",}};
    	String[] columnNames = {"Propriétés", "Valeur"};
    	ListSelectionModel selectionModle = new DefaultListSelectionModel();
    	selectionModle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    	comboBox = new JComboBox();
    	comboBox.addItem("Colset");
    	comboBox.addItem("Variable");
    	setModel(new DefaultTableModel(data, columnNames) {

        	@Override
        	public boolean isCellEditable(int row, int column) {
            	if (column == 0 && row == 0) {
                	getColumnModel().getColumn(column).setCellEditor(new DefaultCellEditor(comboBox));
                	return true;
            	} else {
                	return false;
            	}
        	}
    	});
	}

	public static void main(String[] args) {
    	table_place table = new table_place();
    	JFrame f = new JFrame();
    	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	f.setSize(500, 500);
    	f.setVisible(true);
    	f.add(table);
	}
}

Software Developer
Mahmoudkelany.com


 

#5

بارك الله فيك أخ محمود

كود شغال

شكرا

#6

السلام عليكم

قمت بتحسين كود لان كود السابق كان يعمل مشكل في ترتيب إفنت

public class table_place 
{
    DefaultTableModel model;
    public final JComboBox comboBox;
    public final JTable table;
    public DefaultCellEditor dce1;
    public TableCellEditor editor1;
    table_place(JTable jtable)
    {
        this.table=jtable;
        Object[][] data = { { "name", "", },{ "type", "", } };
        String[] columnNames = { "Propriétés", "Valeur"};
        ListSelectionModel selectionModel = new DefaultListSelectionModel();
        selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         comboBox = new JComboBox();
         comboBox.addItem("Colset");
         comboBox.addItem("Variable");
         dce1 = new DefaultCellEditor( comboBox );
         editor1 =table.getCellEditor();
         table.setModel(new DefaultTableModel(data, columnNames){

          @Override
           public boolean isCellEditable(int row, int column)
           {
              if (column == 1 && row != 0)
                {
                        table.getColumnModel().getColumn(column).setCellEditor(editor1);
                        return true;
                }
              else if (column == 1 && row == 0)
                {
                        table.getColumnModel().getColumn(column).setCellEditor(new DefaultCellEditor(comboBox));
                        return true;
                }

               else
                {
                        return false;
                }
          }
                });

    }


}
#7
mohammeding كتب:

السلام عليكم

قمت بتحسين كود لان كود السابق كان يعمل مشكل في ترتيب إفنت

تمام انت عدلت حسب ما يناسبك :D

اهم حاجه ان الفكره وضحت

بالتوفيق

Software Developer
Mahmoudkelany.com


 

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