Affichage des articles dont le libellé est jtextarea. Afficher tous les articles
Affichage des articles dont le libellé est jtextarea. Afficher tous les articles

Java JTable With JTextArea Column

How to Create JTextArea Inside JTable Cells In Java Netbeans

Create a JTable with a JTextArea Column in Java Swing




In this Java Tutorial we will see How To Create a JTable with a JTextArea column to display multiline text in the table cell.

What We Are Gonna Use In This Project:

- Java Programming Language.
- NetBeans Editor.





Project Source Code:



package new_tutorials;

import com.formdev.flatlaf.FlatIntelliJLaf;
import java.awt.Component;
import java.util.List;
import java.util.ArrayList;
import javax.swing.AbstractCellEditor;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellEditor;

/**
 *
 * @author 1BestCsharp
 */
public class JtableWithJtextAreaColumn extends JFrame{

    public JtableWithJtextAreaColumn()
    {
        setTitle("JTable With JtextArea Column");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(800, 400);
        setLocationRelativeTo(null);
        /*
        try{
            UIManager.setLookAndFeel(new FlatIntelliJLaf());
        }catch(UnsupportedLookAndFeelException ex){}
        */
        
        initializeGUI();
    }
    
    
    private void initializeGUI()
    {
        JTable table = new JTable(new CustomTableModel());
        table.setRowHeight(60);
        table.setShowHorizontalLines(true);
        table.setShowVerticalLines(true);
        table.getColumnModel().getColumn(3).setCellRenderer(new JTextAreaCellRenderer());
        table.getColumnModel().getColumn(3).setCellEditor(new JTextAreaCellEditor());
        
        JScrollPane scrollpane = new JScrollPane(table);
        add(scrollpane);
        
        setVisible(true);
    }
    
    
    public static void main(String[] args) {
        
        new JtableWithJtextAreaColumn();
        
    }
    
    
    // Custom Table Model for the JTable
    private class CustomTableModel extends AbstractTableModel
    {
        private final String[] columnNames = {"First Name","Last Name","Age","Address"};
        private final List<Person> data = new ArrayList<>();
        
        public CustomTableModel()
        {
            data.add(new Person("John", "Silva", 30, "123 Main St, City A, Country X, Postal Code: 12345, 456 Elm St, City B, Country Y, Postal Code: 56789 - 123 Main St, City A, Country X, Postal Code: 12345, 456 Elm St, City B, Country Y, Postal Code: 56789 - 123 Main St, City A, Country X, Postal Code: 12345, 456 Elm St, City B, Country Y, Postal Code: 56789 - 123 Main St, City A, Country X, Postal Code: 12345, 456 Elm St, City B, Country Y, Postal Code: 56789 - 123 Main St, City A, Country X, Postal Code: 12345, 456 Elm St, City B, Country Y, Postal Code: 56789 - 123 Main St, City A, Country X, Postal Code: 12345, 456 Elm St, City B, Country Y, Postal Code: 56789"));
            data.add(new Person("Jane", "Doe", 25, "456 Elm St, City B, Country Y, Postal Code: 56789"));
            data.add(new Person("Michael", "Johnson", 40, "789 Oak St, City C, Country Z, Postal Code: 10111"));
            data.add(new Person("Emily", "Smith", 28, "321 Pine St, City D, Country X, Postal Code: 67890"));
            data.add(new Person("Daniel", "Brown", 35, "567 Cedar St, City E, Country Y, Postal Code: 11223"));
            data.add(new Person("Olivia", "Jones", 22, "876 Maple St, City F, Country Z, Postal Code: 44556"));
            data.add(new Person("David", "Martinez", 33, "234 Birch St, City G, Country X, Postal Code: 78901"));
            data.add(new Person("Sophia", "Taylor", 29, "987 Willow St, City H, Country Y, Postal Code: 23456"));
            data.add(new Person("William", "Clark", 45, "543 Rose St, City I, Country Z, Postal Code: 11234"));
            data.add(new Person("Emma", "Anderson", 27, "210 Sunflower St, City J, Country X, Postal Code: 56789"));
        }

        @Override
        public int getRowCount() { return data.size();}

        @Override
        public int getColumnCount() { return columnNames.length;}
        
        @Override
        public String getColumnName(int columnIndex){ return columnNames[columnIndex];}

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
           
            Person person = data.get(rowIndex);
            return switch(columnIndex){
                case 0 -> person.getFirstName();
                    case 1 -> person.getLastName();
                        case 2 -> person.getAge();
                            case 3 -> person.getAddress();
                            default -> null;
            };
            
        }
        
        
        public Class<?> getClassName(int columnIndex){
            return columnIndex == 3 ? JTextArea.class:Object.class;
        }
        
        
        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex){
            return columnIndex == 3;
        }
        
        
        @Override
        public void setValueAt(Object value, int rowIndex, int columnIndex){
            
            if(columnIndex == 2 && value instanceof String)
            {
                data.get(rowIndex).setAddress((String)value);
                fireTableCellUpdated(rowIndex, columnIndex);
            }
            
        }
        
    }
    
    
    // Custom cell renderer for JTextArea column
    private class JTextAreaCellRenderer extends DefaultTableCellRenderer
    {
        private final JTextArea textArea;
        
        // Constructor to initialize JTextArea properties
        public JTextAreaCellRenderer()
        {
            textArea = new JTextArea();
            textArea.setLineWrap(true);
            textArea.setWrapStyleWord(true);
            textArea.setOpaque(true);
        }
        
        // Method to render JTextArea component in table cell
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
        {
            textArea.setText(value != null ? value.toString() : "");
            return textArea;
        }
        
    }  
    
    // Custom cell editor for JTextArea column
    private class JTextAreaCellEditor extends AbstractCellEditor implements TableCellEditor
    {
        private final JTextArea textArea;
        private final JScrollPane scrollPane;
        
        public JTextAreaCellEditor()
        {
            textArea = new JTextArea();
            textArea.setLineWrap(true);
            textArea.setWrapStyleWord(true);
            scrollPane = new JScrollPane(textArea);
            scrollPane.setBorder(null);
        }

        // Method to retrieve the edited cell value
        @Override
        public Object getCellEditorValue() {
           return textArea.getText();
        }

        // Method to return the JTextArea component for editing
        @Override
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
            
            textArea.setText(value != null ? value.toString() : "");
            return scrollPane;
            
        }
    }
    
    
// Model class representing a person's information
    private class Person 
    {
        private String firstName;
        private String lastName;
        private int age;
        private String address;
        
        public Person(String fname, String lname, int age, String adrs){
            this.firstName = fname;
            this.lastName = lname;
            this.age = age;
            this.address = adrs;
        }

        public String getFirstName() {
            return firstName;
        }

        public String getLastName() {
            return lastName;
        }

        public int getAge() {
            return age;
        }

        public String getAddress() {
            return address;
        }
        
        public void setAddress(String address){ this.address = address; }
        
        
    }
    
}


The Final Result:

JTable with JTextArea Cells in Java





Java Combobox With JTextArea

How to Add TextArea to a Combobox In Java Netbeans

Java Combobox With JTextArea


In this Java Tutorial we will see How To Create a JCombobox With JTextArea Inside It In Java Using Netbeans.

What We Are Gonna Use In This Project:

- Java Programming Language.
- NetBeans Editor.





Project Source Code:


package new_tutorials;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListCellRenderer;

/**
 *
 * @author 1BestCsharp
 */
public class TextAreaComboboxFrame extends JFrame{
    
    private JComboBox<TextAreaComboboxElement> comboBox;
    private JTextArea displayTextArea;
    
    public TextAreaComboboxFrame(){
        // Set up the JFrame
        setTitle("TextArea Combobox");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Set the layout manager for the JFrame
        setLayout(new FlowLayout());
        // Create a JComboBox and set its renderer
        comboBox = new JComboBox<>();
        comboBox.setRenderer(new TextAreaComboboxRenderer());
        
        // Add three items with multiline text to the combobox
        comboBox.addItem(new TextAreaComboboxElement("Item 1", "This is the first item.\nIt has multiple lines."));
        comboBox.addItem(new TextAreaComboboxElement("Item 2", "This is the second item.\nIt also has multiple lines."));
        comboBox.addItem(new TextAreaComboboxElement("Item 3", "This is the third item.\nIt's multiline as well."));
        
        // Add an item listener to handle item selection
        comboBox.addItemListener((e) -> {
           
            TextAreaComboboxElement selectedItem = (TextAreaComboboxElement)comboBox.getSelectedItem();
            
            if(selectedItem != null){
                displayTextArea.setText(selectedItem.getText());
            }
            
        });
        
        add(comboBox);
        displayTextArea = new JTextArea(5,20);
        displayTextArea.setEditable(false);
        add(new JScrollPane(displayTextArea));
        setSize(400,400);
        setLocationRelativeTo(null);
        
        // Set the initial text in the display area
        TextAreaComboboxElement initialItem = comboBox.getItemAt(0);
        displayTextArea.setText(initialItem.getText());
        
    }
    
    
    
    
    
    // Create an Inner class representing elements in the combobox
    public static class TextAreaComboboxElement{
        private final String label;
        private final String text;
        
        // constructor
        public TextAreaComboboxElement(String label, String text){
            this.label = label;
            this.text = text;
        }
        
        // Getters
        public String getLabel(){ return label; }
        
        public String getText(){ return text; }
        
    }
    
    
    // Create an Inner class representing the renderer for the combobox
    private class TextAreaComboboxRenderer extends JPanel implements ListCellRenderer<TextAreaComboboxElement>{

        private final JLabel label;
        private final JTextArea textArea;
        
        public TextAreaComboboxRenderer(){
            setLayout(new BorderLayout());
            label = new JLabel();
            add(label, BorderLayout.NORTH);
            textArea = new JTextArea();
            textArea.setLineWrap(true);
            textArea.setWrapStyleWord(true);
            textArea.setEditable(false);
            add(textArea, BorderLayout.CENTER);
        }
        
        // Implement the rendering of combobox elements
        @Override
        public Component getListCellRendererComponent(JList<? extends TextAreaComboboxElement> list, TextAreaComboboxElement value, int index, boolean isSelected, boolean cellHasFocus) {
            // Set the label and text of the renderer components
            label.setText(value.getLabel());
            textArea.setText(value.getText());
            // Set the background and foreground based on selection
            if(isSelected){
                setBackground(Color.BLACK);
                getComponent(0).setForeground(Color.YELLOW);
            }
            else
            {
                setBackground(list.getBackground());
                getComponent(0).setForeground(list.getForeground());
                //setForeground(list.getForeground());
            }
            
            return this;
            
        }
        
    }
    
    
    
    public static void main(String[] args) {
        TextAreaComboboxFrame frame = new TextAreaComboboxFrame();
        frame.setVisible(true);
    }

}


The Final Result:


How to Add TextArea to a Combobox In Java Netbeans


How to Add JTextArea to a JCombobox In Java Netbeans








Java JList With JTextArea

How to Add TextArea to a JList In Java Netbeans

How to Add TextArea to a JList In Java Netbeans


In this Java Tutorial we will see How To Create a JList With JTextArea Inside It In Java Using Netbeans.

What We Are Gonna Use In This Project:

- Java Programming Language.
- NetBeans Editor.





Project Source Code:



package new_tutorials;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Insets;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListCellRenderer;

/**
 *
 * @author 1BestCsharp
 */
public class TextAreaInJListFrame extends JFrame{

    private JList<TextAreaListElement> textAreaList;
    
    public TextAreaInJListFrame(){
        setTitle("TextArea In JList");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        
        List<TextAreaListElement> elements = new ArrayList<>();
        elements.add(new TextAreaListElement("Item 1", "Description for Item Line Description for Item 1 Line 2 Description for Item 1 Line 3"));
        elements.add(new TextAreaListElement("Item 2", "Description Description DescriptionDescription DescriptionDescription Description Description Description Description for Item 2"));
        elements.add(new TextAreaListElement("Item 3", "Description for Item 3"));
        elements.add(new TextAreaListElement("Item 11", "Description for Item Line Description for Item 1 Line 2 Description for Item 1 Line 3"));
        elements.add(new TextAreaListElement("Item 22", "Description Description DescriptionDescription DescriptionDescription Description Description Description Description for Item 2"));
        elements.add(new TextAreaListElement("Item 33", "Description for Item 3"));
        elements.add(new TextAreaListElement("Item 41", "Description for Item Line Description for Item 1 Line 2 Description for Item 1 Line 3"));
        elements.add(new TextAreaListElement("Item 52", "Description Description DescriptionDescription DescriptionDescription Description Description Description Description for Item 2"));
        elements.add(new TextAreaListElement("Item 63", "Description for Item 3"));
        elements.add(new TextAreaListElement("Item 71", "Description for Item Line Description for Item 1 Line 2 Description for Item 1 Line 3"));
        elements.add(new TextAreaListElement("Item 82", "Description Description DescriptionDescription DescriptionDescription Description Description Description Description for Item 2"));
        elements.add(new TextAreaListElement("Item 93", "Description for Item 3"));
        elements.add(new TextAreaListElement("Item 211", "Description for Item Line Description for Item 1 Line 2 Description for Item 1 Line 3"));
        elements.add(new TextAreaListElement("Item 992", "Description Description DescriptionDescription DescriptionDescription Description Description Description Description for Item 2"));
        elements.add(new TextAreaListElement("Item 543", "Description for Item 3"));

        textAreaList = new JList<>(elements.toArray(TextAreaListElement[] :: new));
        textAreaList.setCellRenderer(new TextAreListRenderer());
        
        JScrollPane scrollPane = new JScrollPane(textAreaList);
        add(scrollPane, BorderLayout.CENTER);
        setSize(400,300);
        setLocationRelativeTo(null);
        
    }
    
    
    public static class TextAreaListElement{
        private final String label;
        private final String description;
        
        public TextAreaListElement(String label, String description){
            this.label = label;
            this.description = description;
        }
        
        public String getLabel(){
            return label;
        }
        
        public String getDescription(){
            return description;
        }
        
    }
    
    
    // create a renderer to display the textArea
    private class TextAreListRenderer extends JTextArea implements ListCellRenderer<TextAreaListElement>{

        public TextAreListRenderer(){
            setLineWrap(true);
            setWrapStyleWord(true);
            setMargin(new Insets(5, 10, 5, 10));
            setFont(new Font("Arial", Font.PLAIN, 16));
            setPreferredSize(new Dimension(300,80));
        }
        
        @Override
        public Component getListCellRendererComponent(JList<? extends TextAreaListElement> list, TextAreaListElement value, int index, boolean isSelected, boolean cellHasFocus) {
         
            setEnabled(list.isEnabled());
            setText(value.getLabel()+ "\n" + value.getDescription());
            
            if(isSelected){
                setBackground(Color.BLACK);
                setForeground(Color.YELLOW);
            }
            else{
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }
            
            return this;
        }
        
    }
    
    
    public static void main(String[] args) {
        
        TextAreaInJListFrame frame = new TextAreaInJListFrame();
        frame.setVisible(true);
        
    }
}


The Final Result:


Java JList With JTextArea

JList With JTextArea In Java