当前位置: 首页 > 知识库问答 >
问题:

在Jtable单元格中使用JCheckbox渲染JPanel。现在面板未与Jtable中的单元格中心对齐

陈瀚玥
2023-03-14

单元格渲染器:

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    if(value!=null && ai38DataModel!=null){
        //panel.removeAll();
        List<AI38BetModelTable> modelList = ai38DataModel.getModelList();
        LinkedHashMap<String, JPanel> elePanelMap = ai38DataModel.getElePanelMap();
        if(modelList!=null || !modelList.isEmpty() || !elePanelMap.isEmpty()){
            AI38BetModelTable model = modelList.get(row);
            String key = ai38DataModel.getPanelEleStringKey(model.getSelectedEvent().getEventCode(), model.getSelectedBetCode(), model.getElement(), (Set<Integer>)value);
            panel = elePanelMap.get(key);
            }
        }
                  
    return panel;
    
    }

将JChecboxs添加到面板:

                    for(Integer value: nameValuePair.get(key)){         
                        JCheckBox jChkbx = new JCheckBox(value.toString());
                        jChkbx.setOpaque(false);
                        jChkbx.addItemListener(listener);
                        panel.add(jChkbx);                          
                        }

[在此输入图片描述][1]

强文本[1]:https://i.stack.imgur.com/D8Mhs.png

请查找所附图像。

共有1个答案

佟和平
2023-03-14

当我使用GridBaglayout而不是FlowLayout时,我的问题得到了解决。现在,JCheckbox与面板内的中心对齐。

for(String key : nameValuePair.keySet()){
  JPanel panel = new JPanel(new GridBagLayout());
  modelList.add(new AI38BetModelTable(selectedeEvent,selectedBetCode,key,nameValuePair.get(key)));
  String keyForPanel = ai38DataModel.getPanelEleStringKey(selectedeEvent.getEventCode(), selectedBetCode, key, nameValuePair.get(key));
  for(Integer value: nameValuePair.get(key)){
    JCheckBox jChkbx = new JCheckBox(value.toString());
    jChkbx.setOpaque(false);
    jChkbx.addItemListener(listener);
    panel.add(jChkbx);
  }
  panelEleMap.put(keyForPanel, panel);
}

 类似资料:
  • 问题内容: 我正在跟踪发现的一些代码,(是的,我知道它是如何工作的)它来自这里:代码链接 我想做的是如果单元格值设置为“黄色”,则设置单元格前景色 这是我的代码: 和单元格渲染器 问题是,如果我将任何单元格值设置为“黄色”,它就不会改变 提前致谢! 问题答案: 您的渲染器曾经使用过吗?您将其设置为包含String的单元格的默认渲染器,但是是否重载了模型的方法,以便它知道某些单元格包含String

  • 问题内容: 我不知道如何对齐JTable中单元格的值。 例如,Jtable显示姓名工资X.先生100000.50 XXXX 234.34 YYYy 1205.50 我想以以下格式对齐“薪水”。 如何在JTable上方对齐 问题答案: 无需为此创建自定义类,只需使用默认渲染器即可: 或者更好的方法是在表中实际存储Double值,然后使用适当的数字渲染器,数字渲染器将自动右对齐。然后,您可以使用表格格

  • 我的代码有一个特殊的问题。 然后它会发生在图像上出现的事情。我需要汉字列是CENTER对齐,但出于某种原因,'tcr,不工作,因为它应该是,但默认渲染器正在做它应该是。 有什么建议/帮助吗?

  • 问题内容: 假设我有以下JTable,只要按下一个按钮,就会显示该JTable: 我想呈现 最初 对JCheckBox 为真的单元格,以及所有 最初为 false的所有单元格不显示任何内容(无JCheckBox)。用户可以选中或取消选中最初为真的单元格中的JCheckBoxes,这会对我创建的图表有所帮助。 现在,我的单元格渲染器在所有单元格中显示JCheckBoxes,包括最初为false的单元

  • 问题内容: 你们真是太棒了,为我在最后一个问题上指明了正确的方向,我在这里对我原来的问题进行了扩展: 如何将JTable列设置为String并排序为Double? 由于现在我使用自定义单元格渲染器将价格列的格式设置为$ ###,## 0.00,因此我现在还为该单元格设置了JTextField编辑器。单元格的编辑工作正常,除了更新值时,自定义渲染器中设置的数字格式似乎不再格式化单元格(在提交编辑后,

  • 问题内容: 我正在尝试实现本教程中描述的自定义TableRenderer 。我想让渲染器对每个给定单元格很长的文本进行换行。这个想法是,使用TextArea作为渲染器,因为它支持换行。但是,以下代码无法正常工作: 我将此渲染器设置为 但是单元格条目保持未包装状态。如果我添加到该方法,则所有单元格都按预期是黄色,但没有被包裹。 有任何想法吗? 更新: 正如Michael Borgwardt在评论中指