কম্পিউটার

জাভাতে TableCellRenderer এবং TableCellEditor এর মধ্যে পার্থক্য কি?


টেবলসেল রেন্ডারার

  • একটি টেবলসেল রেন্ডারার একটি উপাদান তৈরি করে যা একটি JTable এর মান প্রদর্শন করে সেল।
  • ডিফল্ট রেন্ডারার JLabel ব্যবহার করে প্রতিটি টেবিল ঘরের মান প্রদর্শন করতে।
  • টেবলসেল রেন্ডারার ইন্টারফেস দুটি উপায়ে নির্দিষ্ট করা যেতে পারে:table.setDefaultRenderer() ব্যবহার করে রেন্ডার করা বস্তুর শ্রেণি অনুসারে পদ্ধতি এবং tableColumn.setCellRenderer() ব্যবহার করে একটি কলাম দ্বারা পদ্ধতি এবং tableColumn.setHeaderRenderer() একটি নির্দিষ্ট কলাম হেডারের জন্য পদ্ধতি।
  • টেবলসেল রেন্ডারার ইন্টারফেসের শুধুমাত্র একটি পদ্ধতি আছে getTableCellRendererComponent() এবং এই পদ্ধতিটি মানের উপর ভিত্তি করে বিভিন্ন রেন্ডারিং উপাদান ফেরত দিতে পারে, একটি কক্ষের ফোকাস থাকে বা নির্বাচিত হয়, সারি এবং কলাম যা মান থাকতে পারে।

টেবলসেল এডিটর

  • একটি টেবিলসেল সম্পাদক এটি একটি ইন্টারফেস এবং ডিফল্টরূপে, কোষগুলি সম্পাদনাযোগ্য হতে পারে৷
  • একটি টেবিলসেল সম্পাদক isCellEditable() এ কল করে নির্ধারণ করা যেতে পারে একটি টেবিলমডেলের পদ্ধতি .
  • কোন ঘরের মানের ক্লাস বুলিয়ান হলে, একটি JCheckBox ব্যবহার করা যেতে পারে। সম্পাদনা মোডে রাখার জন্য যদি ডাবল ক্লিক করতে হয়, একটি JTextField ব্যবহার করা যেতে পারে।
  • টেবলসেল এডিটর ইন্টারফেসের শুধুমাত্র একটি পদ্ধতি আছে getTableCellEditorComponent () এবং এই পদ্ধতিটি মানের উপর ভিত্তি করে বিভিন্ন সম্পাদনা উপাদান ফেরত দিতে পারে, একটি ঘর নির্বাচন করা হয়েছে, সারি এবং কলাম যা মান থাকতে পারে।

উদাহরণ

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class TableCellRendererEditorTest extends JFrame {
   private JTable table;
   public TableCellRendererEditorTest() {
      setTitle("TableCellRendererEditor Test");
      DefaultTableModel dtm = new DefaultTableModel() {
         public boolean isCellEditable(int row, int column) {
            return !(column == 0);
         }
      };
      dtm.setDataVector(new Object[][]{{"Table Cell Renderer", "Table Cell Editor"}, {"Table Cell           Renderer","Table Cell Editor"}}, new Object[]{"Renderer","Editor"});
      table = new JTable(dtm);
      table.getColumn("Editor").setCellRenderer(new TextAreaRenderer());
      table.getColumn("Editor").setCellEditor(new TextAreaEditor());
      table.setRowHeight(80);
      JScrollPane spane = new JScrollPane(table);
      add(spane);
      setSize(400, 275);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) {
      new TableCellRendererEditorTest();
   }
}
class TextAreaRenderer extends JScrollPane implements TableCellRenderer {
   JTextArea textarea;
   public TextAreaRenderer() {
      textarea = new JTextArea();
      textarea.setLineWrap(true);
      textarea.setWrapStyleWord(true);
      getViewport().add(textarea);
   }
   public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row, int column) {
      if (isSelected) {
         setForeground(table.getSelectionForeground());
         setBackground(table.getSelectionBackground());
         textarea.setForeground(table.getSelectionForeground());
         textarea.setBackground(table.getSelectionBackground());
      } else {
         setForeground(table.getForeground());
         setBackground(table.getBackground());
         textarea.setForeground(table.getForeground());
         textarea.setBackground(table.getBackground());
      }
      textarea.setText((String) value);
      textarea.setCaretPosition(0);
      return this;
   }
}
class TextAreaEditor extends DefaultCellEditor {
   protected JScrollPane scrollpane;
   protected JTextArea textarea;
   public TextAreaEditor() {
      super(new JCheckBox());
      scrollpane = new JScrollPane();
      textarea = new JTextArea();
      textarea.setLineWrap(true);
      textarea.setWrapStyleWord(true);
      scrollpane.getViewport().add(textarea);
   }
   public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
      textarea.setText((String) value);
      return scrollpane;
   }
   public Object getCellEditorValue() {
      return textarea.getText();
   }
}

আউটপুট

জাভাতে TableCellRenderer এবং TableCellEditor এর মধ্যে পার্থক্য কি?


  1. জাভাতে JRadioButton এবং JCheckBox এর মধ্যে পার্থক্য কি?

  2. জাভাতে JTextField এবং JTextArea এর মধ্যে পার্থক্য কি?

  3. জাভাতে JFrame এবং JDialog এর মধ্যে পার্থক্য কি?

  4. জাভাতে GridLayout এবং GridBagLayout এর মধ্যে পার্থক্য কি?