Wie machen JTable Zellen editierbar oder nicht Editierbar zur Laufzeit?

Ich benutze eine JTable und die Parameter in Tabelle übergeben werden, die durch die Hash-Map.
Hash-Tabelle enthält 2 Parameter. 1 ist der Schlüssel(String) & andere ist-Wert(das ist ein Vektor).
Vektor enthält 2 Dinge :Ersten Wert(entspricht-Taste) und die andere ist ein Zeichen(R/W).(Lesen/Schreiben).

Ich habe eine Tabelle, die durch diese HashMap.Aber ich bin nicht in der Lage, die"R/W" - Wert zur Laufzeit.
Wenn die besonderes Zelle enthält "R" bedeutet, dass die Zelle nur zum Lesen(nicht Editierbare Zelle).
Wenn die besonderes Zelle enthält "W" bedeutet, dass die Zelle nur für Schreiben Sie den neuen Wert auch (Editierbare Zelle).

SSCCE:

import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Enumeration;
import java.util.Vector;
import java.util.List;
import javax.swing.table.TableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
public class DataTable extends JTable implements ActionListener,ItemListener,MouseListener
{
String ReadOrWrite[][];
JTable table;
public DataTable()
{
    try
    {
        HashMap<String,String> HMap;
        String array[][];
        int count = 0;
        Vector Val;
        JFrame frame = new JFrame("Table");
        JPanel panel = new JPanel();
        HMap = getMetaData();
        array = new String[HMap.size()][2];
        ReadOrWrite = new String[HMap.size()][2];
        for (Map.Entry entry : HMap.entrySet())
        {
            array[count][0] = (String) entry.getKey();
            Val = (Vector) entry.getValue();
            array[count][1] = (String) Val.elementAt(0);
            String s1 = (String) Val.elementAt(1);
            ReadOrWrite[count][1] = s1;
            count++;
        }
            String TableLabels[] = {"Field", "Values"};
            table = new JTable(array, TableLabels);
            table.addMouseListener(new MouseAdapter()
            {
                public void mouseClicked(MouseEvent e)
                {
                }
             }
            JTableHeader header = table.getTableHeader();
            JScrollPane scrollPane = new JScrollPane(table);
            panel.add(scrollPane);
            frame.add(panel);
            frame.add(scrollPane, BorderLayout.CENTER);
            frame.setSize(300, 400);
            frame.setResizable(true);
            frame.setVisible(true);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}
HashMap getMetaData()
{
    HashMap ta=new HashMap();

    Vector vec1 =new Vector();
    vec1.add("1");
    vec1.add("R");
    Vector vec2 =new Vector();
    vec2.add("2");
    vec2.add("W");
    ta.put("A",vec1);
    ta.put("B",vec2);
    return ta;
}
public void itemStateChanged(ItemEvent e)
{
}
public void actionPerformed(ActionEvent e)
{
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}

}
Dies ist der komplette Code von meiner Tabelle.

  • Für bessere Hilfe früher, nach einem SSCCE.
  • PLZ Blick auf den link, das ist NICHT ein SSCCE. Bitte auch die Mühe machen, die Zauber-Wörter vollständig. (Es ist 'bitte', nicht 'plz')
  • "ich verstehe nicht, wie diese zu erstellen SSCCE." Was verstehen Sie nicht? Verstehen Sie die Worte von der Abkürzung?
  • Ich vermute, dass durch das 'posten' meinst du 'schaffen', da der Prozess der Entsendung einer SSCCE ist genau das gleiche wie code-snippets posten. Und das führt mich zurück zu Was verstehen Sie nicht über die Erstellung einer SSCCE? spezifisch Sein, anstatt zu wiederholen, dass Sie nicht wissen, wie. Dass keine Fortschritte.
  • "Der ganze code ist, notieren Sie sich den oben." Wo ist HashMap importiert? Was ist der name der Klasse? Wenn es 'der code', diese beiden Dinge wäre offensichtlich. Führen Sie diesen test für mich: 1) Starten Sie ein neues code-Projekt. 2) Kopieren Sie/fügen Sie genau was ist in der obigen Frage, wie der code. 3) Kompilieren. 4) Bericht der Fehler. 5) Wiederholen Sie das genaue experiment mit der Fragen, die ich gestellt habe, die code enthalten. Diese code-Beispiele SSCCEs.
  • Versuchen Sie das experiment in meinem letzten Kommentar, mit Ihren aktuellen code zu sehen.. I:\...\DataTable.java:49: ')' expected. Ein SSCCE des run-time-problem sollte kompilieren ohne Fehler. Warum ist es so schwer zu verstehen?
  • Es gibt keine Fehler beim kompilieren meines Codes(Neues Projekt)..Also, was ich als Nächstes tun ?
  • Ich gebe auf. In der Zeit, die Sie wurden mit Füllung herum, habe ich Sie dazu aufgefordert werden andere Menschen zu veröffentlichen, die SSCCE. Sie haben geschrieben ein SSCCE. Ich habe das problem behoben, und verfasst eine Antwort. Sie habe die Antwort und markierte das richtige. Ich habe keine Zeit, um mit dem Löffel füttern Sie mehr.
  • Sehr geehrter Herr..., vielen Dank, dass Sie mir Antwort..ich habe Komplette code Sir.By dieser code wird eine Tabelle generiert, und es ist Standardmäßig Editierbar...ich habe einfach wissen wollen, wie kann ich meine Tabelle editierbare und nicht-editierbare zur Laufzeit (Mit R/W-Werte)......

InformationsquelleAutor MIT | 2011-10-17
Schreibe einen Kommentar