Tag: jtable

如何在JTable的单元格中实现自动完成function?

我的JTable有一个单元编辑器,实现为DefaultCellEditor(JComboBox)类的一个实例。 我尝试过几个不同的东西( 为Swing Comboboxes添加自动完成支持 ),但它仍然不起作用。 1: // JComboBox combo = new JComboBox(new Object[] { “Ester”, “Jordi”, “Jordina”, “Jorge”, “Sergi” }); AutoCompleteDecorator.decorate(combo); DefaultCellEditor cellEditor = new DefaultCellEditor(combo); TableColumn column = myTable.getColumnModel().getColumn(2); column.setCellEditor(cellEditor); // 2: // Object[] elements = new Object[] { “Ester”, “Jordi”, “Jordina”, “Jorge”, “Sergi” }; JComboBox c = new JComboBox(elements); c.setEditable(true); AutoCompleteSupport support = […]

java AbstractTableModel 2每行不同的颜色

我想提高我的jtable的可读性,下面是MyTableModel.java类,如何使每个行中有2种不同的颜色显示在这张图片中 。 应该具体的方法是,我可以为每一行提供不同的颜色,以提高用户的可读性。 public class MyTableModel extends AbstractTableModel{ String [] columnNames; Vector<Vector> data; public DataAccessObject ObjDb = new DataAccessObject (); public MyTableModel(String [] coln , Vector<Vector> data) { columnNames = coln; this.data =data; } @Override public int getColumnCount() { return columnNames.length; } @Override public int getRowCount() { return data.size(); } @Override public String getColumnName(int col) […]

如何将值加载到JTable中,以便在打开表单时显示以前的值?

如何将数组值加载到JTable这样无论何时打开表单,它都会显示表的先前值? 我不想将表单连接到任何数据库。 这是我的代码到目前为止,它允许我在文本字段中输入文本,当我单击“创建客户”按钮时,它将值存储到JTable 。 但是,如果我退出并重新打开表单,表格中先前的数据将消失。 我做了一些研究,但似乎将netbeans连接到数据库是保存和检索数据的唯一方法。 但是,我相信将数据存储到数组中也是可能的,但我不知道如何将数组中的值带出到表中。 我需要一些帮助。 这是我的学校项目。 仅供参考,我使用过的一些符号: rbtn = radiobutton, tb = textfields, lbl = label public class Customer extends javax.swing.JFrame { String gender; int year = Calendar.getInstance().get(Calendar.YEAR); int month = Calendar.getInstance().get(Calendar.MONTH); int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); int m=10; //array memory size String[] name = new String[m]; String[] age = new String[m]; String[] […]

将DefaultTableModel数据复制到剪贴板

我有下一个JTable private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); getContentPane().setLayout(null); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {“Hat”, “New York”, “1000”}, {“T-Shirt”, “New York”, “3500”}, {“Sweater”, “Washington”, “2800”}, {“Bag”, “California”, “7000”}, }, new String [] { “Name”, “Warehouse”, “Quantity” } )); jScrollPane1.setViewportView(jTable1); getContentPane().add(jScrollPane1); […]

JScrollPane中的JTable:禁用滚动条的最佳高度

我使用以下代码在JScrollPane创建JTable以显示列标题 JTable不会显示列标题 String[] columnNames = {“header1”, “header2”, “header2”, “header3”}; Object[][] data = new Object[num][4]; //feed values into data using for JTable chart = new JTable(data, columnNames); chart.setShowVerticalLines(false); chart.setEnabled(false); chart.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); JScrollPane sp = new JScrollPane(chart); sp.setPreferredSize(new Dimension(width, chart.getHeight() + 5)); panel.add(sp); 问题是我需要为JScrollPane计算一个高度 ,这样整个JTable就可以看到,而JScrollBar也不会出现。 我怎样才能做到这一点? num从2变为4,如果是4,则会出现滚动条。 width是固定的。

对最后一行除了JTable排序

我有一个JTable ,其中最后一行是聚合所有其他行的总行。 当用户单击表上的列标题时,行按该列排序,但总行应始终位于底部。 有没有一种简单的方法来使用TableRowSorter实现它?

jtable cellrenderer在运行时更改单元格的背景颜色

我正在尝试创建一个表格和颜色特定的单元格,黄色,红色或白色,具体取决于其他列的内容。 为此,我循环填充值的行,然后检查内容。 对于当前显示在屏幕上的每一行都可以正常工作,但是当程序到达未显示的行时,或者如果用户尝试滚动每个单元格,则将其背景颜色更改为白色。 我在网上搜索了解决方案,唯一合情合理的想法是在每次循环后重置cellRenderer,这不起作用,因为它也会重置每个单元格。 我希望有人知道这方面的解决方案,或者可以让我知道我在哪里搞砸了什么。 我正在使用这个循环 for(int e = 0; e < modules.size(); e++) { gui.clearOutputStream(); gui.getOutputStream().setText("Load Modul " + modules.get(e) + "\r\n"); version = getVersion(modules.get(e)); //Update current Row updateRow(gui.getReleaseTabelle(), e); } 它调用这种方法 public void updateRow(JTable target, int row){ //… //insert Values here //… CustomRenderer cr = new CustomRenderer(); cr.tab = target; if(!target.getValueAt(row, 2).equals(target.getValueAt(row, 3))) […]

自定义渲染器后JTable列无法编辑

这是此处发布的问题的后续跟进。 我按照答案中的说明操作,它就像一个魅力。 但是,无法编辑日期列:我无法在填充的表中选择任何JDateChooser 。 如前面的问题所述,我正在使用MVC模式。 当我从视图中填充JTable和setCellRenderer ,它工作正常。 只有当我从控制器填充并设置setCellRenderer时才会启用日期列。 这是渲染器: public class JDateChooserRenderer extends JDateChooser implements TableCellRenderer{ Date inDate; @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { // TODO Auto-generated method stub if (value instanceof Date){ this.setDate((Date) value); } else if (value instanceof Calendar){ this.setCalendar((Calendar) value); } this.setEnabled(true); […]

如何从jtable中删除一行

我想更改按钮的操作以删除。 我有这个代码: package buttonexample; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableModel; public class ButtonExample { public JTable table; public static void main(String[] args) { final ButtonExample example = new ButtonExample(); javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { example.createAndShowGUI(); […]

在JTable的单个列上显示MySQL数据库中的图像

我正在尝试显示从blob数据类型的MySQL数据库中检索的图像。 无法弄清楚导致图像列显示数据的问题是什么[B@29b8e4f7而不是图像图标。 DefaultTableModel model = new DefaultTableModel(new Object[]{ “image”, “item_name”, “quantity”,”price”, “category”, “color”, “size”}, 0){ @Override public Class getColumnClass(int column) { switch(column){ case 0: return ImageIcon.class; default: return String.class; } } }; myTable.setModel(model); … ResultSet rs = database.getRS(); int columns = rs.getMetaData().getColumnCount(); while(rs.next()){ Object[] row = new Object[columns]; for(int i = 1; i <= columns; […]