我试过这个:
public void removeSelectedFromTable(JTable from)
{
int[] rows = from.getSelectedRows();
TableModel tm= from.getModel();
while(rows.length>0)
{
((DefaultTableModel)tm).removeRow(from.convertRowIndexToModel(rows[0]));
rows = from.getSelectedRows();
}
from.clearSelection();
}
Run Code Online (Sandbox Code Playgroud)
但是,它有时会留下一个.可能是什么问题?
我有一个使用DefaultTableModel的JTable,我允许在用户点击列标题时进行排序.但是,当用户单击具有integer类型数据的列的标头时,它不能正确排序.它似乎是按String而不是整数类型排序.
这是我的代码中我实际将数据添加到表中的部分:
DefaultTableModel aModel = (DefaultTableModel) mainView.logEntryTable.getModel();
ResultSetMetaData rsmd; try {
mainView.logEntriesTableModel.setRowCount(0);
rsmd = rs.getMetaData();
int colNo = rsmd.getColumnCount();
while(rs.next()){
Object[] objects = new Object[colNo];
for(int i=0;i<colNo;i++){
objects[i]=rs.getObject(i+1);
}
aModel.addRow(objects);
count++;
}
mainView.logEntryTable.setModel(aModel);
mainView.logEntryTable.getColumnModel().getColumn(0).setMaxWidth(80);
Run Code Online (Sandbox Code Playgroud)
所以我试图覆盖该方法并最终得到:
@Override
public Class<?> getColumnClass(int columnIndex){
if( columnIndex == 0){
// Return the column class for the integer column
}else{
// Return the column class like we normally would have if we didn't override this method
}
return null;
}
};
Run Code Online (Sandbox Code Playgroud)
我以前从未覆盖过这个,我不太清楚我在这里做什么.
我正在制作一个带有文本字段的表格,您可以在其中输入单词来过滤表格.它有效,但我想要做的是能够用输入的单词过滤它,但忽略单词的情况.有没有办法在不创建自定义的情况下完成此操作RowFilter?
您可以运行此SCCEE以查看我正在谈论的内容.我想能够输入usa并且它将过滤USA.
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
public class TestTableSortFilter extends JApplet {
private String[] columnNames
= {"Country", "Capital", "Population in Millions", "Democracy"};
private Object[][] data = {
{"USA", "Washington DC", 280, true},
{"Canada", "Ottawa", 32, true},
{"United Kingdom", "London", 60, true},
{"Germany", "Berlin", 83, true},
{"France", "Paris", 60, true},
{"Norway", "Oslo", 4.5, …Run Code Online (Sandbox Code Playgroud) 我有一个Jtable,我称之为方法
table1.setAutoCreateRowSorter(true);.所以这很好用.但我在我的JFrame类中也有一个方法,当我按下按钮时会触发它.它使用此代码获取选定的行索引
int selectedRows[] = this.table1.getSelectedRows();.并显示所选间隔中对应的第一行的编辑窗口.
问题是,如果我没有点击列的标题(我的意思是我根本不对它们进行排序),我的方法是完美的.但是当我对行进行排序时,行的索引似乎根本没有变化 - 从而导致旧行的编辑窗口最初在进行任何排序之前处于该位置.
我正在使用JDK 6可以给任何提示吗?
我在JScrollPane的Viewport中使用第二个JTable来为主表构建RowHeader.主表上的DragAndDrop已禁用.在rowheader表上启用DnD.
如果用户启动了rowheader上的Drag,我想在主表上扩展绘制的rowheader下划线(图像中的黑线)(如图中的绿线).

有人对我有建议吗?
这是SSCCE:
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.DropMode;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JViewport;
import javax.swing.TransferHandler;
import javax.swing.UIManager;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;
public class DNDLinePainterExampleMain extends JFrame {
public DNDLinePainterExampleMain() {
JTable mainTable = new JTable(4, 3);
mainTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JTable rowTable = new RowHeaderTable(mainTable);
rowTable.setAutoscrolls(true);
rowTable.setDragEnabled(true);
rowTable.setTransferHandler(new RowHeaderTransferHandler());
rowTable.setDropMode(DropMode.INSERT_ROWS);
JScrollPane scrollPane = new JScrollPane(mainTable);
scrollPane.setRowHeaderView(rowTable);
scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,
rowTable.getTableHeader()); …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用JTable并希望有2行标题,类似于:

这甚至是可能还是我必须做别的事?如果是这样,什么?使用Supertitle-titleA,SuperTitle-titleB将占用太多空间并使信息冗余.
我正在尝试从一个被调用的方法中设置项目,FootballClub到目前为止它很好.但后来我从它创建了一个arrayList,我不知道怎么找不到将这些信息存储到JTable中的方法.问题是我找不到设置固定行数的方法
这是我的代码:
类StartLeague:
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
public class startLeague implements LeagueManager{
//setting the frame and other components to appear
public startLeague(){
JButton createTeam = new JButton("Create Team");
JButton deleteTeam = new JButton("Delete Team");
JFrame frame = new JFrame("Premier League System");
JPanel panel = new JPanel();
frame.setSize(1280, 800);
frame.setVisible(true);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String col[] = {"Pos","Team","P", "W", "L", "D", "MP", "GF", "GA", "GD"};
panel.setLayout(new GridLayout(20, 20));
panel.add(createTeam);
panel.add(deleteTeam);
panel.add(new JLabel(""));
//JLabels to fill the space
}
} …Run Code Online (Sandbox Code Playgroud) 我搜索了很多并得到了这个Q的答案.但是他们中的许多人都提到了404错误的链接.我想像这样制作表格:

java中有没有这方面的方法?
我在java中创建了一个JTable.除了搜索表格中的元素,我可以做任何事情.我想要一个输入对话框,所以这就是我现在所拥有的:
btnSearch = new JButton("Search");
btnSearch.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String name = JOptionPane.showInputDialog("Wat wil je zoeken?");
}
});
add(btnSearch);
Run Code Online (Sandbox Code Playgroud)
我想用for循环来做.但我不知道怎么做.有人可以帮我吗?
jtable ×10
java ×9
swing ×9
jtableheader ×2
arraylist ×1
grid-layout ×1
rowfilter ×1
search ×1
selection ×1
sorting ×1