[英]Rendered JPanel with JcheckBoxes inside an Jtable cell. Now the Panel is not getting align to centre of the cell in Jtable
单元格渲染器:
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
请找到附加的图像。
当我使用 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(整数值:nameValuePair.get(key)){
JCheckBox jChkbx = new JCheckBox(value.toString()); jChkbx.setOpaque(false); jChkbx.addItemListener(listener);
面板.add(jChkbx);
} panelEleMap.put(keyForPanel,面板); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.