我有一个JTable,模型实例化为:
TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]);
Run Code Online (Sandbox Code Playgroud)
生成数组的位置.但是,目前,您仍然可以编辑单元格.我怎么能阻止这个?
谢谢!
我有一个JAVA项目,并希望使用DefaultTableModel使我的JTable不可编辑.我知道一个解决方法,称为:
JTable table = new JTable(...){
public boolean isCellEditable(int row, int column){
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
喜欢说:我不喜欢这个.这不符合我学校的训练规则.
有没有办法做到这一点?也许有一个好方法.希望如此!
我正在编写一个类来跟踪线程并在JTable中显示状态/进度.我想到的是一个JTable,其中包含所有必要的状态/按钮/等.在一列中布置,每行一个线程.我使用单元格编辑器来获取表格中的可点击按钮,但我无法解决的问题是,除非我点击另一个单元格,否则所选单元格中的项目不会更新.有没有办法让所选单元格仍然更新?下面的代码演示了这个问题.单击行中的开始按钮将启动该线程,但在选择该行时,连续进度将不会更新.
import javax.swing.*;
import javax.swing.table.*;
import java.util.Random;
import java.lang.Thread;
import java.lang.Math;
import java.beans.*;
import java.util.concurrent.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
/*
* Program tracks some threads' progress, updating status in
* cells in a JTable.
*
* Inner classes are MyDefTM, ThreadOB and ThreadCell which are
* the table model, the object representing the thread's data and
* the renderer/editor "stamp", respectively.
*/
public class ThreadManager {
public JFrame jFrame;
public JTable jTable;
public MyDefTM tm;
public …Run Code Online (Sandbox Code Playgroud) JTable我的问题与和相关DefaultTableModel。我的任务是创建JTable一个显示带有复选框的数据...我成功地完成了..但是我想删除由JTable复选框选择的行...我知道这已经被问了太多次...而且我需要使用removeRow(int row)方法用于删除...但是当我执行该语句时
DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
int totalrows=model.getRowCount();
for (int i = totalrows - 1 ; i >= 0; i--)
{
Boolean checked = (Boolean) jTable1.getModel().getValueAt(i, 8);
if (checked)
{
((DefaultTableModel)jTable1.getModel()).removeRow(i);
}
}
Run Code Online (Sandbox Code Playgroud)
它总是从getRowCount()方法返回 0,因此它不会进入循环。表已经有行。
我的TableModel班级如下
public class tabmod extends DefaultTableModel
{
public tabmod(Object rowData[][], Object columnNames[]) {
super(rowData, columnNames);
}
@Override
public Class getColumnClass(int col) {
if (col == 8)
return Boolean.class;
return super.getColumnClass(col); //other columns accept String …Run Code Online (Sandbox Code Playgroud) 我有JTable/ 的问题JScrollPane.我的数据表没有刷新/更新.我正在使用DefultTableModel并根据代码一切正常,我没有任何错误.此外,我有一个分页表,这就是为什么我使用动作监听器和按钮"prev"和"next".我从其他函数传递给在类中编码的函数 JTable.问题是我填充了包含表数据的数组,但表不会更新/刷新它.这是我的代码.谢谢你.
BIG EDIT旧代码已被删除.我添加了新的代码,可以帮助你们/女孩了解我的问题.希望这会有所帮助.问候.
这里首先是显示gui的类:
import javax.swing.*;
public class Glavni {
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
gui Scanner = new gui();
Scanner.setVisible(true);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
第二个是将String传递给包含jtable的gui类的类
public class passDatatoTable {
public void passData(){
String str1,str2,str3,str4;
gui SendStringsToGUI = new gui();
for (int i =0;i<=10;i++){
str1="Column 1 of row: "+i;
str2="Column 2 of row: "+i;
str3="Column 3 of …Run Code Online (Sandbox Code Playgroud) 我有一个使用DefaultTableModel创建的JTable,我想在鼠标悬停在该JTable的特定单元格上时显示图像,并且我需要每个单元格的图像不同.
提前致谢
我无法尝试在JTable工作中创建单击行事件.我已将事件添加到我的JTable中,但是当我运行程序并单击该行时,它不会显示该消息.
这是我的代码:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.SQLException;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
public class listContacts extends JFrame {
public listContacts(){
setLayout(new FlowLayout());
String[] columnNames = {"GSD Number", "Scheduled Time"};
Object [][] dataTable = {};
DefaultTableModel listTableModel;
listTableModel = new DefaultTableModel(dataTable, columnNames) {
//Prevent user from editing the cells
public boolean isCellEditable(int rowIndex, int mCollIndex){
return false;
}
};
int cont = 1;
while(cont < 10){
listTableModel.addRow(new Object[] {cont, …Run Code Online (Sandbox Code Playgroud) 我有一个 Java 应用程序,它使用 JTables 添加文件以供浏览。它仅包含 1 列:
DefaultTableModel model = new DefaultTableModel(new String[] {"Name"}, 0);
JTable tracks = new JTable(model){
public boolean isCellEditable(int rowIndex, int collIndex){
return false;
}
};
tracks.addMouseListener(new PopupListener());
tracks.setShowGrid(false);
Run Code Online (Sandbox Code Playgroud)
将文件添加到表是这样完成的:
for (File file : results){
model.addRow(new Object[] {file});
}
Run Code Online (Sandbox Code Playgroud)
我需要添加实际文件,而不仅仅是它的名称,因为我稍后会使用它。但是,该表是否可能只显示文件名(file.getName();)而不是整个路径?
我需要从 JTable 中删除行。
这是我的代码:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.GridLayout;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;
public class GuiManyComponents implements ItemListener, ActionListener {
public static void main(String[] args) {
new GuiManyComponents();
}
JTextField txtField1;
JTextArea tarMultipleLines;
JButton btnDelete;
JButton btnAdd;
JButton btnEdit;
JButton ok;
JButton cancel;
JTable table …Run Code Online (Sandbox Code Playgroud) 我的类从DefaultTableModel扩展
我尝试:
super.removeRow(...);
Run Code Online (Sandbox Code Playgroud)
和
this.removeRow(...);
Run Code Online (Sandbox Code Playgroud)
为什么他们都工作?
java ×10
jtable ×10
swing ×10
arrays ×1
file ×1
image ×1
jscrollpane ×1
mouseevent ×1
overriding ×1
swingworker ×1