【问题标题】:Rendered JPanel with JcheckBoxes inside an Jtable cell. Now the Panel is not getting align to centre of the cell in Jtable在 Jtable 单元格中使用 JcheckBoxes 渲染 JPanel。现在面板没有与 Jtable 中的单元格中心对齐
【发布时间】:2021-12-28 11:00:09
【问题描述】:

单元格渲染器:

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;
    
    }

将 Jcheckboxes 添加到面板:

                    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

请找到附件。

【问题讨论】:

  • 您在面板中使用哪种布局?请提供minimal reproducible example,以便我们也可以运行您的代码并重现您的问题。请不要发布您的完整代码,而是创建一个简单的小示例来演示您的问题。
  • 嗨@SergiyMedvynskyy,感谢您抽出宝贵时间回复。当我使用 GridBaglayout 而不是 FlowLayout 时,我的问题得到了解决。现在 Jcheckboxes 对齐到面板内的中心。

标签: java swing jtable jpanel jcheckbox


【解决方案1】:

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

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);
}

【讨论】:

    猜你喜欢
    • 2016-02-03
    • 2011-10-02
    • 2011-01-25
    • 2013-12-16
    • 2013-10-03
    • 2014-01-10
    • 2012-04-21
    • 2013-02-10
    • 1970-01-01
    相关资源
    最近更新 更多