JTableを使用していて、テーブルのパラメータがハッシュマップを通過しています。 ハッシュマップには2つのパラメータが含まれています。 1はkey(String)&で、他はValue(Vector)です。 Vectorには、最初の値(Keyに対応)とその他の文字(R/W)(Read/Write)の2つが含まれています。実行時にJTableセルを編集可能または編集不可能にする方法はありますか?
私は、実行時に、「R/W」の値を使用することはできませんよ、このHashMap.Butてテーブルを作成してもらってください。 睾丸細胞に「R」が含まれている場合は、特定の細胞が読み取り専用である(非編集細胞)ことを意味します。 斑点セルに「W」が含まれている場合は、特定のセルが新しい値を書き込むためだけに使用可能であることを意味します(編集可能なセル)。
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) {
}
} これは私の表の完全なコードです。
、[SSCCE](http://pscode.org/sscce.html)を投稿してください。 –
PLZリンクを見てください。**は** SSCCEではありません。また、単語を完全に綴るように努力してください。 –
*「私はどのようにこのSSCCEを作成することを理解していない。」*あなたは何を理解していない(それは、ない「PLZ」「してください」ですか)?略語の言葉を理解していますか? –