Tag: tablecelleditor

Celleditor(JComboBox)在JTable的特定行中

我不知道怎么做在特定行中设置一个jcombobox …现在我对所有行都有这个jcombobox,但我想只在一行中: JComboBox cc = new JComboBox(); cc.addItem(jComboBox5.getSelectedItem()+”/”+jComboBox6.getSelectedItem()+”/”+jComboBox7.getSelectedItem()+” “+jComboBox1.getSelectedItem()+”.”+jComboBox2.getSelectedItem()); jTable1.getColumnModel().getColumn(3).setCellEditor(new DefaultCellEditor(cc)); DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); renderer.setToolTipText(“CLICCA PER LE DATE”); jTable1.getColumnModel().getColumn(3).setCellRenderer(renderer);

使用编辑器validation表的单元格

我的JTable有一个密码字段编辑器。 我想在用户单击编辑另一个字段时,如果文本长度小于8位,则显示错误消息。 我尝试过焦点听众。 但它不起作用。 请帮助我,因为我刚刚开始使用java swing。 class PasswordEditor extends DefaultCellEditor { TextBox m_passWord = new TextBox(); public PasswordEditor() { super(new TextBox()); } @Override public Object getCellEditorValue() { return this.m_passWord.getText(); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { Object fieldValue = value; if(null == fieldValue) fieldValue = Constants.EMPTY_STRING; this.m_passWord.addInputMethodListener(new […]

JTable单元编辑器编号格式

我需要在jTable中显示精确的2位小数。 为此,我创建了一个自定义单元格编辑器: public class NumberCellEditor extends DefaultCellEditor { public NumberCellEditor(){ super(new JFormattedTextField()); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { JFormattedTextField editor = (JFormattedTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column); if (value!=null){ DecimalFormat numberFormat = new DecimalFormat(“#,##0.00;(#,##0.00)”); editor.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(numberFormat))); Number num = (Number) value; String text = numberFormat.format(num); editor.setHorizontalAlignment(SwingConstants.RIGHT); […]

简单快速的JTree Cell Editor

我有一个带有自定义TreeModel和自定义TreeRenderer的JTree。 树模型包含一堆不同类型的对象。 其中一种类型的显示方式与其他类型不同:显示的文本是对象的两个字段的串联。 当我编辑单元格时,我想用编辑的文本更新其中一个字段。 到目前为止,我的工作得很好。 我的问题:当编辑时显示的文本是2个字段的完整连接值时,即使您实际上只是编辑其中一个字段,也会让人感到困惑。 所以我想只显示用户开始编辑时正在编辑的一个字段的内容。 我尝试使用自定义CellEditor来做这件事,我看到它应该工作的方式,这种方法在我的情况下似乎有点过分。 我只是想在很多情况下改变显示的文本,所以我自然而然地希望实现它,而不是整个CellEditor来完成我的Tree的整个内容。 是否有更快速,更简单的方法,或者我必须使用自定义编辑器? 谢谢

如何从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单元格编辑器和单元格渲染器

我创建了一个带有自定义表格渲染和自定义单元格编辑器的JTable,它可以在图像中显示结果 我使用扩展JPanel的单独类创建了第一个表格单元格中显示的面板。 并将表值添加为, tbl.setCellEditor(new customCell()); tbl.getColumnModel().getColumn(0).setCellRenderer(new customCell()); DefaultTableModel dtm = (DefaultTableModel) tbl.getModel(); Vector v = new Vector(); v.add(new Panel()); v.add(“Test”); dtm.addRow(v); v.clear(); v.add(new Panel()); v.add(“Test 2”); dtm.addRow(v); 这是我的表自定义类来创建这个表, class customCell extends DefaultTableModel implements TableCellRenderer, TableCellEditor { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Panel p = new […]

如何使JComboBox表编辑器具有普通JComboBox的设计?

我有一个JComboBox用作JTable的编辑器。 在图片中,您可以在标有Produs的列中看到它们。 我想在网格单元格中使用独立JComboBox的设计,特别是combobox的右侧部分,网格单元格中缺少三角形,因此用户将知道网格单元格是combobox而没有点击其中一个。 如何将JComboBox ( IsBackFlush )的设计应用于网格中的JComboBoxes ? 基本上,我如何根据comboBox2的设计设计comboBox1 ? 谢谢。

进度条Java

我正在使用JProgressBar来显示进度。 但是,如何将progressBar显示为从0加载到100? 我从互联网及其工作中获得了代码,除了progressBar没有加载。 码 progressFrame = new JFrame(); // frame to display progress bar progressBar = new JProgressBar(0,100); progressBar.setValue(0); progressBar.setStringPainted(true); progressFrame.add(progressBar); new SwingWorker() { protected Void doInBackground() throws SQLException, ClassNotFoundException { Class.forName(“oracle.jdbc.driver.OracleDriver”); progressBar.setValue(0); frame.setEnabled(false); // frame = main frame //tableclass creates a JTable with data from database tableclass = new TheDatabaseTable(deptName);//it takes time to create […]

如何将JTable单元格输入标记为无效?

如果我使用JTable并在其模型上指定列的classtype,如下所示: DefaultTableModel model = new DefaultTableModel(columnNames, 100) { @Override public Class getColumnClass(int columnIndex) { return Integer.class; }}; 然后,每当用户尝试在表格中输入double值时,Swing会自动拒绝输入并将单元格的轮廓设置为红色。 当某人输入单元格的“负数或0”输入时,我希望发生相同的效果。 我有这个: @Override public void setValueAt(Object val, int rowIndex, int columnIndex) { if (val instanceof Number && ((Number) val).doubleValue() > 0) { super.setValueAt(val, rowIndex, columnIndex); } } } 这可以防止单元格接受任何非正值,但不会将颜色设置为红色并使单元格保持可编辑状态。 我试着调查JTable默认情况下是如何做出拒绝的,但我似乎无法找到它。 如何拒绝非正输入与拒绝非整数输入相同? 谢谢

当单元格中的JComboBox中存在ItemEvent时,如何获取CellRow

我有一个JTable,其中包含一个包含JComboBox的列。 我有一个附加到JComboBox的ItemListener,它对任何更改起作用。 但是,ItemListener没有获取已更改的ComboBox所在的Row的方法。 我需要行号以便在ComboBox发生更改时对同一行中的另一列进行操作。 任何帮助,将不胜感激。 这是我的简短代码。 我想要完成的是在itemlistener获取更改时获取ComboBox的表行。 import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.io.IOException; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; public class Example extends JFrame { private static final long serialVersionUID = 1L; public static int maxX, maxY; public static final String[] columnHeads = {“Col 1”, “Col 2”, “Col 3”}; public static […]