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

jtable Renderer

بدأه محمد1991 في 12 يناير 2012 · 2 رد · 744 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

لدي table اريد جعل صفوفه مختلفة الالوان بحيث الفردي بلون والزوجي بلون

بحثت في الكلاس jtable ولم اجد ما يساعدني

سوى هذا الكود

 public Component getTableCellRendererComponent
        (JTable table, Object value, boolean selected, boolean focused, int row, int column)
    {
        setEnabled(table == null || table.isEnabled()); // see question above

        if ((row % 2) == 0)
            setBackground(Color.green);
        else
            setBackground(Color.white);

        super.getTableCellRendererComponent(table, value, selected, focused, row, column);

        return this;
    }

هل هذا يساعدني في المطلوب

كيف اقوم بتغير لون الصفوف باستخدامه زما هي ال

Object value, boolean selected, boolean focused, int row, int column


هذا هو الكود الخاص بي الذي اريد تغيره لكنه يعتمد على classes اخرى
/**
 * @(#)AnswerReport.java
 *
 *
 * @author 
 * @version 1.00 2012/1/12
 */



import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
  import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel; 
import javax.swing.table.TableColumn; 
import javax.swing.table.JTableHeader; 
import javax.swing.table.DefaultTableCellRenderer;

public class AnswerReport extends DefaultTableCellRenderer{
  public static  boolean visable=false;	
  static JFrame frame = new JFrame("Answer Report"); 
    public  static javax.swing.JTable table = new JTable(); 
    static  DefaultTableModel jdtm= new DefaultTableModel();
   Font font= new Font("Aparajita", Font.BOLD + Font.ITALIC,20); 
       public AnswerReport() {

                table.setModel(jdtm);
               // table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);

                jdtm.addColumn("Q-number");
                jdtm.addColumn("Qustion");
                 jdtm.addColumn("Answer");
                 jdtm.addColumn("TrueAnswer");


                      table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

                 // Set the first visible column to 100 pixels wide
                  int vColIndex = 1;int vColIndex2 = 3;
                   TableColumn col = table.getColumnModel().getColumn(vColIndex);
                   TableColumn col2 = table.getColumnModel().getColumn(vColIndex2);
                   int width = 500;

                    col.setPreferredWidth(width);
                    col2.setPreferredWidth(width);

                     table.getTableHeader().setFont(font);
                     table.getTableHeader().setBackground(Color.blue);

                     	table.setGridColor(Color.blue);

        // Make the frame

        frame.setSize(1300,700);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // Action when window closes

               // Make table

        JScrollPane scrollPane = new JScrollPane(table);        // Make scrollpane with table

        // Add scrollpane with table to the frame and show the frame to user
        frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
        frame.getContentPane().add(new JLabel(new ImageIcon(getClass().getResource("user_header.jpg")) ), BorderLayout.NORTH);
         frame.getContentPane().add(new JLabel("               ") , BorderLayout.EAST);
          frame.getContentPane().add(new JLabel("              ") , BorderLayout.WEST);
           frame.getContentPane().add(new JLabel("                                ") , BorderLayout.SOUTH);
          frame.setVisible(true);



                       for(int i=0;i<user_interface.choice.size();i++){

                                String num="  "+(i+1);
                                String qustion=Connect.qustion.get(user_interface.choice.get(i));
                                String tr=user_interface.answer.get(i);
                                String you=user_interface.answer2.get(i);
                                String answerd ;
                               if(tr.equals(you)){
                               	 answerd=" Correct ";
                               }
                               else
                               	answerd="not correct"; 
                                String Trueanswerd;
                                if(answerd.equals("not correct")){
                                	Trueanswerd=user_interface.answer.get(i);
                                }
                                else
                                	Trueanswerd="";
                                Object obj[] = {num,qustion,answerd,Trueanswerd};
                                jdtm.addRow(obj);
                                Object o = new Object();


                        }



         }               

          public static  void setvisable(boolean visb){
    	visable=visb;
    	frame.setVisible(visb);
    }

  public Component getTableCellRendererComponent (JTable table, Object value, boolean selected, boolean focused, int row, int column)
    {
        setEnabled(table == null || table.isEnabled()); // see question above

        if ((row % 2) == 0)
            setBackground(Color.green);
        else
            setBackground(Color.white);

        super.getTableCellRendererComponent(table, value, selected, focused, row, column);

        return this;
    }


}
#2

حسب ما هو موجود في ال doc

public Component getTableCellRendererComponent(JTable table,

Object value,

boolean isSelected,

boolean hasFocus,

int row,

int column)

Returns the component used for drawing the cell. This method is used to configure the renderer appropriately before drawing.

Parameters:

table - the JTable that is asking the renderer to draw; can be null

value - the value of the cell to be rendered. It is up to the specific renderer to interpret and draw the value. For example, if value is the string "true", it could be rendered as a string or it could be rendered as a check box that is checked. null is a valid value

isSelected - true if the cell is to be rendered with the selection highlighted; otherwise false

hasFocus - if true, render cell appropriately. For example, put a special border on the cell, if the cell can be edited, render in the color used to indicate editing

row - the row index of the cell being drawn. When drawing the header, the value of row is -1

column - the column index of the cell being drawn

ال object هو القيمة التي اريد ان اجري عليها التعديل اذا ارادت على الصف باكمله اذا كان زوجي ماذا ستكون قيمتها ؟؟

#3
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
  Color clr = null;
  if (row % 2 == 0) {
	clr = Color.BLUE;
  } else {
	clr = Color.RED;
  }
  Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
  c.setBackground(clr);
  return c;
}

هذا إذا كنت تريد تغيير لون الأسطر، أما إذا كنت تريد تغيير الأعمدة، فغير الشرط للتالي

if (column % 2 == 0)

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