2016-03-27 25 views
2

ile nasıl düzenlerim Swing ile bir uygulama geliştiriyorum. JTable'um var. Benim JTable içinde JTextArea ekliyorum, ancak JTextArea düzenlenemez. benim sorunum DefaultCellEditor yılında, Kodum:JTextArea'yı JTable

import com.sun.java.accessibility.util.AWTEventMonitor; 
import com.sun.rowset.internal.InsertRow; 
import java.awt.Button; 
import java.awt.Color; 
import java.awt.Component; 
import java.awt.Container; 
import java.awt.FlowLayout; 
import java.awt.GradientPaint; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.GridLayout; 
import java.awt.Insets; 
import java.awt.Paint; 
import java.awt.Rectangle; 
import java.awt.RenderingHints; 
import java.awt.TextArea; 
import java.awt.TextField; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import java.awt.event.MouseMotionAdapter; 
import java.awt.event.MouseMotionListener; 
import java.awt.geom.Area; 
import java.awt.geom.Rectangle2D; 
import java.awt.geom.RoundRectangle2D; 
import java.util.EnumSet; 
import java.util.EventObject; 
import javafx.scene.layout.Border; 
import javax.swing.Action; 
import javax.swing.CellEditor; 
import javax.swing.DefaultCellEditor; 
import javax.swing.JButton; 
import javax.swing.JCheckBox; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
import javax.swing.border.TitledBorder; 
import javax.swing.plaf.basic.BasicSplitPaneUI; 
import javax.swing.table.AbstractTableModel; 
import javax.swing.table.DefaultTableCellRenderer; 
import javax.swing.table.DefaultTableModel; 
import javax.swing.table.JTableHeader; 
import javax.swing.table.TableCellRenderer; 
import javax.swing.table.TableColumn; 
import javax.swing.text.JTextComponent; 
import javax.swing.text.TableView; 

/** 
* 
* @author brahim 
*/ 
public class ExpertInterface1 extends javax.swing.JFrame { 
    public JFrame jframe ; 
    public int sourisx1 ; 
    public int sourisy1 ; 
    public int sourisx2 ; 
    public int sourisy2 ; 
    public boolean souris ; 
    /** 
    * Creates new form InterfaceMain 
    */ 
    public ExpertInterface1() { 
    jframe=this; 
     setUndecorated(true); 
    setBackground(new Color(0.0f,0.0f,0.0f,0.5f)); 

    souris =true; 
    mouse(); 

    show(); 

    initComponents(); 

    this.jframe.setBackground(new Color(0.0f,0.0f,0.0f,0.8f)); 

    this.jPanel3.setBackground(new Color(0.0f,0.0f,0.0f,0.0f)); 
    this.jPanel1.setBackground(new Color(0.0f,0.0f,0.0f,0.0f)); 
    this.jPanel4.setBackground(new Color(0.0f,0.0f,0.0f,0.0f)); 
    this.jPanel2.setBackground(new Color(0.0f,0.0f,0.0f,0.0f)); 
    this.jPanel5.setBackground(new Color(0.0f,0.0f,0.0f,0.0f)); 

    table(); 
    } 
    BrmTableModel Brmtablemodel ; 
    DefaultTableCellRenderer Brmcellrender ; 
    DefaultCellEditor Brmcelleditor ; 

    void table() 
    { 
      /*sauvgarder les donnees */ 
     Brmtablemodel = new BrmTableModel(); 
     /*affichage */ 

     Brmcellrender= new BrmEditTextAfficher(); 

     jTable1.getColumn("").setMaxWidth(30); 
     jTable1.getColumn("").setMinWidth(30); 
     jTable1.setRowHeight(80); 
     jTable1.setModel(Brmtablemodel); 

     //jTable1.getColumn(1).setCellEditor(Brmcelleditor); 
     //jTable1.getColumn(1).setCellRenderer(Brmcellrender); 
     jTable1.setDefaultRenderer(Object.class, Brmcellrender); 
     jTable1.setDefaultEditor(Object.class, Brmcelleditor); 
    jTable1.getColumn("B").setCellEditor(Brmcelleditor); 

    } 





    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jPanel3 = new javax.swing.JPanel(); 
     jPanel1 = new javax.swing.JPanel(); 
     jPanel2 = new javax.swing.JPanel(); 
     jPanel4 = new javax.swing.JPanel(); 
     jPanel5 = new javax.swing.JPanel(); 
     jScrollPane1 = new javax.swing.JScrollPane(); 
     jTable1 = new javax.swing.JTable(); 
     jSeparator1 = new javax.swing.JSeparator(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     setAlwaysOnTop(true); 
     setBounds(new java.awt.Rectangle(1, 50, 5, 5)); 

     jPanel3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 220, 255), 2)); 

     jPanel1.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(22, 227, 246))); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 0, Short.MAX_VALUE) 
     ); 
     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 47, Short.MAX_VALUE) 
     ); 

     jPanel2.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(22, 227, 246))); 

     javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); 
     jPanel2.setLayout(jPanel2Layout); 
     jPanel2Layout.setHorizontalGroup(
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 126, Short.MAX_VALUE) 
     ); 
     jPanel2Layout.setVerticalGroup(
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 30, Short.MAX_VALUE) 
     ); 

     jPanel4.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(22, 227, 246))); 

     javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); 
     jPanel4.setLayout(jPanel4Layout); 
     jPanel4Layout.setHorizontalGroup(
      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 0, Short.MAX_VALUE) 
     ); 
     jPanel4Layout.setVerticalGroup(
      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 32, Short.MAX_VALUE) 
     ); 

     jPanel5.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(22, 227, 246))); 

     jTable1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED, new java.awt.Color(108, 254, 225), new java.awt.Color(108, 254, 225), java.awt.Color.blue, java.awt.Color.blue)); 
     jTable1.setFont(new java.awt.Font("TlwgMono", 0, 14)); // NOI18N 
     jTable1.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] { 
       {null, null, null}, 
       {null, null, null}, 
       {null, null, null}, 
       {null, null, null} 
      }, 
      new String [] { 
       "", "Les symptômes", "la maladie" 
      } 
     ) { 
      Class[] types = new Class [] { 
       java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class 
      }; 

      public Class getColumnClass(int columnIndex) { 
       return types [columnIndex]; 
      } 
     }); 
     jScrollPane1.setViewportView(jTable1); 

     javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); 
     jPanel5.setLayout(jPanel5Layout); 
     jPanel5Layout.setHorizontalGroup(
      jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel5Layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 730, Short.MAX_VALUE) 
       .addContainerGap()) 
     ); 
     jPanel5Layout.setVerticalGroup(
      jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel5Layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap(136, Short.MAX_VALUE)) 
     ); 

     javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); 
     jPanel3.setLayout(jPanel3Layout); 
     jPanel3Layout.setHorizontalGroup(
      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel3Layout.createSequentialGroup() 
       .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(jPanel3Layout.createSequentialGroup() 
         .addGap(157, 157, 157) 
         .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
        .addGroup(jPanel3Layout.createSequentialGroup() 
         .addContainerGap() 
         .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
        .addGroup(jPanel3Layout.createSequentialGroup() 
         .addContainerGap() 
         .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
          .addComponent(jSeparator1)))) 
       .addContainerGap()) 
      .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(jPanel3Layout.createSequentialGroup() 
        .addGap(13, 13, 13) 
        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addContainerGap(639, Short.MAX_VALUE))) 
     ); 
     jPanel3Layout.setVerticalGroup(
      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel3Layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(1, 1, 1) 
       .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(10, 10, 10) 
       .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
       .addContainerGap()) 
      .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(jPanel3Layout.createSequentialGroup() 
        .addGap(13, 13, 13) 
        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addContainerGap(672, Short.MAX_VALUE))) 
     ); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(0, 0, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold>       

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     /* Set the Nimbus look and feel */ 
     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */ 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(ExpertInterface1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(ExpertInterface1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(ExpertInterface1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(ExpertInterface1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 
     //</editor-fold> 
     //</editor-fold> 
     //</editor-fold> 

     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new ExpertInterface1().setVisible(true); 
      } 
     }); 
    } 

     void mouse(){ 

     addMouseMotionListener(new MouseMotionListener() { 
     @Override 
     public void mouseDragged(MouseEvent e) { 
      int thisX = jframe.getLocation().x; 
      int thisY = jframe.getLocation().y; 

      // Determine how much the mouse moved since the initial click 
      int xMoved = (thisX + e.getX()) - (thisX + sourisx1); 
      int yMoved = (thisY + e.getY()) - (thisY + sourisy1); 

      // Move window to this position 
      int X = thisX + xMoved; 
      int Y = thisY + yMoved; 
      jframe.setLocation(X, Y); 



     } 

     @Override 
     public void mouseMoved(MouseEvent e) { 

      /* if(e.getButton()==e.MOUSE_EXITED) 
       { 
      // jframe.setLocation(jframe.getX()+1, jframe.getY() +1); 
       } 
    */  
    } 

    }); 

      addMouseListener(new MouseListener() { 
      @Override 
      public void mouseClicked(MouseEvent e) { 

      } 

      @Override 
      public void mousePressed(MouseEvent e) { 

       sourisx1=e.getX(); 
       sourisy1=e.getY(); 

      } 

      @Override 
      public void mouseReleased(MouseEvent e) { 
      } 

      @Override 
      public void mouseEntered(MouseEvent e) { 
      } 

      @Override 
      public void mouseExited(MouseEvent e) { 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JPanel jPanel2; 
    private javax.swing.JPanel jPanel3; 
    private javax.swing.JPanel jPanel4; 
    private javax.swing.JPanel jPanel5; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JSeparator jSeparator1; 
    private javax.swing.JTable jTable1; 
    // End of variables declaration     





class BrmTableModel extends AbstractTableModel{ 

    Object[] columns = {"","Les Symptones","La maladie"}; 
    Object [][] rows={{"z","z","z"}}; 


     public void setColumns(Object[] columns) { 

      this.columns = columns; 
     } 




    public BrmTableModel() 
    { 
     super(); 
    } 

     @Override 
     public int getRowCount() { 
     return rows.length; 
     } 

     @Override 
     public int getColumnCount() { 
      return columns.length; 
     } 

     @Override 
     public Object getValueAt(int rowIndex, int columnIndex) { 
      return rows[rowIndex][columnIndex]; 
     } 

     @Override 
     public void setValueAt(Object aValue, int rowIndex, int columnIndex) { 

      if(columnIndex==1) 

     super.setValueAt(aValue, rowIndex, columnIndex); 
     } 

     @Override 
     public boolean isCellEditable(int rowIndex, int columnIndex) { 
      return super.isCellEditable(rowIndex, columnIndex); //To change body of generated methods, choose Tools | Templates. 
     } 



} 





class BrmEditTextAfficher extends DefaultTableCellRenderer{ 
     public BrmEditTextAfficher() { 
     } 

     @Override 
     public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 

      if(column == 1) 
      { 
       //GridLayout gl = new GridLayout(1, 1); 
       //JPanel panel = new JPanel(gl); 
      //panel.add(new()); 
      // return (new ChaqueMaladieExpert()) ; 
      JTextArea xe = new JTextArea() ; 
      xe.setEditable(true); 
       return (xe); 
      } 
       else 
       return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
     } 


} 



class BrmEditTextEdit extends DefaultCellEditor { 

     public BrmEditTextEdit(JTextField textField) { 

      super(textField); 

     } 

    public Component getTableCellEditorComponent(JTable table, Object value, 
            boolean isSelected, int row, int column) { 
     JTextArea textarea = new JTextArea(); 

     textarea.setEditable(true); 

     return textarea; 
    } 



    } 





} 

nasıl benim sorunu çözmek için?

+1

Bir editör olarak JTextArea kullanmanın bir örneği için bkz. Http://stackoverflow.com/questions/20590017/display-popup-jframe-under-jtable-cell/20590066#20590066. – camickr

+0

DefaultCellEditor – MohaMed

+1

'da bir sorunum var, bu yüzden sizi çalışan bir örneğe yönlendirdim. – camickr

cevap

0

Sen JTextArea Image of properties menu in NetBeans GUI builder
Edit özellikleri menüsünde 'düzenlenebilir' kutusunu kontrol etmek gerekir: sonra bu satırı, kaynak kodunda Bunu değiştirmek için koyun nerede senin JTextArea oluşturulur:

textarea.setEditable(true); 
+0

Kod kaynağını nereye ekleyebilirim? – MohaMed

+0

@MohaMed Düzenlendi. – Majora320

+0

Aynı sorun devam ediyor – MohaMed