相关疑难解决方法(0)

Java中的侦听器顺序

我编写了自己的表格单元格编辑器,用于扩展AbstractCellEditor和实现a TableCellEditor,an ItemListener和a MouseListener.有没有办法让mouseClicked方法在itemStateChanged方法之前先执行?我正在尝试执行以下操作:

private int rowClicked;
private JTable table;

public void itemStateChanged(ItemEvent e) {
  if (rowClicked == 5) {
    // Do something to row 5.
  }
}

public void mouseClicked(MouseEvent e) {
  Point p = e.getPoint();
  rowClicked = table.rowAtPoint(p);
}
Run Code Online (Sandbox Code Playgroud)

java swing listeners

5
推荐指数
2
解决办法
6195
查看次数

CellEditorListener不会检测何时编辑单元格

我正在研究我的CapStone项目本学期毕业,并且遇到了我正在研究的程序的一些问题.该代码适用于Serendipity书商计划.我要为一个虚构的书店设计一个销售点系统.

目前,当用户编辑给定行的"数量"单元格时,我不得不尝试更新"总计"列(第5列)."数量"字段还需要验证其单元格中的值是否大于库存数量(第1列).

我还阅读了如何使用 Java教程中的表格,并在昨晚搜索了Google几个小时,试图找到一些有关如何使CellEditorListener工作的有用代码.

我之前也尝试过使用CashierPanel类实现CellEditorListener,并通过以下方式注册:

CellEditorListener listener = null;
table.getDefaultEditor(String.class).addCellEditorListener(listener);
Run Code Online (Sandbox Code Playgroud)

这种方法也不起作用.

这是我现在的代码(217行):

/* Imported Dependencies */

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;

import javax.swing.DefaultCellEditor;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;

import net.miginfocom.swing.MigLayout;

public class CashierPanel extends JFrame {

    /**
    * Serial Version UID
    */
    private static final long serialVersionUID …
Run Code Online (Sandbox Code Playgroud)

java swing jtable

5
推荐指数
2
解决办法
5118
查看次数

如何向JTable(Java)添加一种监听器?

我有一个带有纯文本的列.

如果用户双击该列中的行,则该列允许自己编辑该行(应该如此).

我需要一些东西来检测该文本何时被编辑完成(例如,当用户点击回车键时).当发生这种情况时,我需要一些东西来获取该变化的行ID(当然是0).

有任何想法吗?

谢谢!

java swing action jtable listener

3
推荐指数
1
解决办法
1万
查看次数

Java,将单元格内容更改为同一行中另一个单元格的函数

我的问题需要一些帮助.我有一个表,例如双列和字符串列.如果双列中的值为negativ,则字符串应为"negativ".另一种方式,如果值为positiv,则字符串应为"positiv".现在的问题是如果我在jTable中编辑double值,那么字符串也应该更新.

更新我的问题,实际代码如下所示: 但它不起作用,因为在编辑第一列值后,第二列中的字符串不会更新.它只在我第一次启动程序时才有效.

import java.util.Vector;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.*;

public class ExampleRemoveAddRows extends JFrame {

    private Object[] columnNames = {"Double", "positiv / negativ"};
    private Object[][] data = {
        {new Double(10.0), "positiv"},
        {new Double(-10.0), "negativ"},
        {new Double(20.0), "positiv"},
        {new Double(-30.0), "negativ"}
    };
    private JTable table;
    private DefaultTableModel model;

    public ExampleRemoveAddRows() {
        model = new DefaultTableModel(data, columnNames) {
            @Override
            public Class getColumnClass(int column) {
                return getValueAt(0, column).getClass();
            }
            @Override
            public Object getValueAt(int row, int column) {  
                if (column …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablemodel

3
推荐指数
1
解决办法
2840
查看次数

如何在JTable中将JRadioButton添加到组中

我已经为JTable使用渲染器和编辑器添加了单选按钮.我也创建了同样的组.我无法使用此原则实现排他性(只应选择1个单选按钮).请参阅下面的代码并感谢您的回复.

渲染器和编辑器类:

class RadioButtonRenderer implements TableCellRenderer {

    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        if (value == null)
            return null;
        return (Component) value;
    }
}

class RadioButtonEditor extends DefaultCellEditor implements ItemListener {
    private JRadioButton button;

    public RadioButtonEditor(JCheckBox checkBox) {
        super(checkBox);
    }

    public Component getTableCellEditorComponent(JTable table, Object value,
            boolean isSelected, int row, int column) {
        if (value == null)
            return null;
        button = (JRadioButton) value;
        button.addItemListener(this);
        return (Component) value;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jradiobutton buttongroup

2
推荐指数
1
解决办法
8008
查看次数

将JComboBox与自定义渲染器一起用作JTable单元格渲染器/编辑器(体系结构)

我是GUI设计的新手,我试图在我走错路之前做好计划,任何帮助都会很好.我正在尝试显示JTable一行Employee,其本身的数据类型为StringArrayList<Cert>.Cert包含一个String.

我想让表格显示用于编辑的数据,但是对于一些列我想要实现从一组有效字符串中JComboBox选择a String,以及不同地为每个选项着色(不同的背景颜色)在JComboBox)).

此外,ArrayList<Cert>当前在单元格中显示为[xxx,xxx,...],其中XXX是toString()函数中每个项目的返回值ArrayList.我想我想把它显示ArrayList<Cert>为只读JComboBox,但我并不关心这个项目.

我在质疑我需要创建多少个类才能实现这一目标.我已经有了JTable扩展的自定义模型AbstractTableModel.我是否需要编写扩展名JComboBox或者我是否需要JComboBox为一个单元格扩展适当的渲染器并在那里进行魔术,然后将该自定义渲染器分配给单元格的单元格渲染器String

到目前为止,这是我所拥有的,轻描淡写的:

public class EmployeeTableModel extends AbstractTableModel {
  ...
  private ArrayList<Employee> myDataObjects = new ArrayList<Employee>();
  ...
  @Override
  public Object getValueAt(int row, int column) {
      Employee emp = myDataObjects.get(row);

      switch (column) {
          case 0:
              return emp.getName();
          case 1:
              return emp.getShift(); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable renderer

2
推荐指数
1
解决办法
8296
查看次数

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

我有一个JComboBox用作编辑器的人JTable.在图片中,您可以在标有列的列中看到它们Produs.我想JComboBox在网格单元格中使用独立设计,特别是组合框的右侧部分,网格单元格中缺少三角形,因此用户将知道网格单元格是组合框而不必点击其中一个.如何将JComboBox(IsBackFlush)的设计应用于JComboBoxes网格中?

从本质上讲,我如何comboBox2根据设计进行设计comboBox1?谢谢.

裁剪图像

java swing jtable tablecelleditor jcombobox

2
推荐指数
1
解决办法
935
查看次数

使用新值计算JTable列中的总值

我想计算索引[0] [2]中的总值,前一个值是0,但我已经用计算结果"1/y"替换并显示它,当我计算总值时,求和的值是先前的值包含"0"的,这是我的代码,

     //observation table
                                     //0             1        2    3      4      5     6                       
     titleColumn = new Object[]{"Time (Second)","Medicine", "1/y","x2", "X/Y", "Y^", "Error"};
                               //0   1    2   3   4   5   6
    allData = new Double[][]  {{1.0,1.02,0.0,0.0,0.0,0.0,0.0},
                               {2.0,0.667,0.0,0.0,0.0,0.0,0.0},
                               {3.0,0.367,0.0,0.0,0.0,0.0,0.0},
                               {4.0,0.278,0.0,0.0,0.0,0.0,0.0},
                               {5.0,0.237,0.0,0.0,0.0,0.0,0.0},
                               {6.0,0.187,0.0,0.0,0.0,0.0,0.0},
                               {7.0,0.155,0.0,0.0,0.0,0.0,0.0},
                               {8.0,0.156,0.0,0.0,0.0,0.0,0.0},
                               {9.0,0.142,0.0,0.0,0.0,0.0,0.0},
                               {10.0,0.111,0.0,0.0,0.0,0.0,0.0},
                               {11.0,0.12,0.0,0.0,0.0,0.0,0.0},
                               {12.0,0.097,0.0,0.0,0.0,0.0,0.0},
                               {13.0,0.099,0.0,0.0,0.0,0.0,0.0},
                               {14.0,0.089,0.0,0.0,0.0,0.0,0.0},
                               {15.0,0.079,0.0,0.0,0.0,0.0,0.0},
                               {0.0,0.0,0.0,0.0,0.0,0.0,0.0}};

    tableModelObservation = new DefaultTableModel(allData, titleColumn);
    tableObservation.setModel(tableModelObservation);
    int row,column,inputRow,inputColumn;

    //index [0][2] was replaced with calculation 1/y
    row = 0;
    column = 1;
    inputRow = 0;
    inputColumn = 2;
    double onePerY = 0;
    for(int a=0;a<allData.length;a++){ …
Run Code Online (Sandbox Code Playgroud)

java swing jtable

1
推荐指数
1
解决办法
2878
查看次数

具有多个组件的JTable单元

我的任务是实现一个JTable,其中一个列的外观如下: 在此输入图像描述

它应该包含4个元素:
1.一个JCombobox,它控制另外两个的启用状态:它们被启用为"手动"状态,并锁定其他状态的某些数值(让我们调用其他组合状态:'first ','秒','第三').
2.一个JTextField,启用后,控制滑块的值.
3.一个JLabel,它读取"%"并且什么都不做.
4. s JSlider,当启用时,控制JTextField值(这种相互控制是否可以存在?).

我遍布整个网络搜索实现此方法的方法.大多数例子都太肤浅,包括这个类似的问题.

在我问这个之前,我得到了Cell Rendering/fireEditingStopped等版本的折磨,但遗憾的是没有简单的短代码.

任何人都可以告诉我具体的指导方针或代码片段,它可以让我走上正确的道路吗?提前致谢.

java swing jtable cellrenderer

1
推荐指数
1
解决办法
2088
查看次数

从弹出项中获取jTable行号

从附图中我有一个jTable 在此输入图像描述

右键单击一行会启动一个jPopup,其中包含一个"Thread Stop"项.

我想通过单击此菜单项返回行号

怎么做到这一点?

谢谢.

java swing jtable jpopupmenu

0
推荐指数
1
解决办法
811
查看次数

默认表格模型可编辑

我有两个关于jtable和默认表模型的问题

JTable  table = new JTable();
TableModel model = new DefaultTableModel(colNames,rowcount);
table.setModel(model);
Run Code Online (Sandbox Code Playgroud)
  1. 我将comboBox添加到第4列,只有第4列应该是可编辑的,其余部分应该是不可编辑的.如何只使第4列可编辑?
  2. 表的行来自ms访问表,所以如果更改了comboBox,我也想在ms访问表中更新它.如何更新ms访问表中的数据?

java swing jtable

0
推荐指数
1
解决办法
595
查看次数