Browse Source

Pull request #14828: REPORT-134561 & REPORT-134368 & REPORT-134033 & REPORT-132510 & REPORT-133962 & REPORT-133894 & REPORT-132266 & REPORT-133735【newui】表格细节问题,滚动条 ui 和一些缩放

Merge in DESIGN/design from ~ZONGYU.WANG/design:fbp/release to fbp/release

* commit '64c2f7adda84419d18bba146673b0165b6060280':
  fix:代码质量问题
  fix:删除不用代码
  REPORT-134561 & REPORT-134368 & REPORT-134033 & REPORT-132510 & REPORT-133962 & REPORT-133894 & REPORT-132266 fix: 表格细节问题,滚动条 ui 和一些缩放
fbp/release
Zongyu.Wang-王宗雨 3 months ago
parent
commit
af2a8dd312
  1. 21
      designer-base/src/main/java/com/fine/theme/light/ui/FineTableHeaderUI.java
  2. 4
      designer-base/src/main/java/com/fr/design/actions/TableDataSourceAction.java
  3. 12
      designer-base/src/main/java/com/fr/design/actions/help/SystemInfoPane.java
  4. 10
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
  5. 20
      designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java
  6. 7
      designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/common/DesensitizationOpenPane.java
  7. 15
      designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java
  8. 11
      designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java
  9. 111
      designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/EmbeddedTableDataPane.java
  10. 14
      designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java
  11. 40
      designer-base/src/main/java/com/fr/design/gui/frpane/tree/layer/config/LayerDependenceSettingPane.java
  12. 1
      designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java
  13. 22
      designer-base/src/main/java/com/fr/design/gui/iscrollbar/UIBasicVerticalScrollBar.java
  14. 6
      designer-base/src/main/java/com/fr/design/gui/iscrollbar/UIScrollBarUI.java
  15. 33
      designer-base/src/main/java/com/fr/design/gui/itable/FineUITableCellEditor.java
  16. 10
      designer-base/src/main/java/com/fr/design/javascript/ExportJavaScriptPane.java
  17. 3
      designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java
  18. 5
      designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java
  19. 3
      designer-base/src/main/resources/com/fine/theme/icon/tip/jump_to_references.svg
  20. 1
      designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json
  21. 1
      designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLaf.properties
  22. 1
      designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties
  23. 1
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties
  24. 1
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties
  25. 1
      designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties
  26. 1
      designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties
  27. 4
      designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java

21
designer-base/src/main/java/com/fine/theme/light/ui/FineTableHeaderUI.java

@ -17,6 +17,7 @@ import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import java.awt.Color;
import java.awt.Component;
import java.awt.FontMetrics;
import java.awt.Graphics;
/**
@ -87,7 +88,7 @@ public class FineTableHeaderUI extends FlatTableHeaderUI {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Class<?> columnClass = table.getColumnClass(0);
Border border;
if (column == table.getColumnCount() - 1) {
if (column == table.getColumnCount() - 1 && table.getAutoResizeMode() != JTable.AUTO_RESIZE_OFF) {
border = BorderFactory.createCompoundBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIManager.getColor("defaultBorderColor")),
UIManager.getBorder("Table.cellNoFocusBorder"));
} else {
@ -101,8 +102,26 @@ public class FineTableHeaderUI extends FlatTableHeaderUI {
}
setBackground(selectionBackground);
setText(value == null ? StringUtils.BLANK : String.valueOf(value));
setToolTipText(table, value, column);
setBorder(border);
return this;
}
/**
* 显示不全的文字增加了 toolTip
* @param table
* @param value
* @param column
*/
private void setToolTipText(JTable table, Object value, int column) {
String tipText = value == null ? StringUtils.BLANK : String.valueOf(value);
FontMetrics fm = this.getFontMetrics(this.getFont());
int textWidth = fm.stringWidth(String.valueOf(value));
if (textWidth > table.getColumnModel().getColumn(column).getWidth()) {
setToolTipText(tipText);
} else {
setToolTipText(null);
}
}
}
}

4
designer-base/src/main/java/com/fr/design/actions/TableDataSourceAction.java

@ -9,6 +9,7 @@ import com.fr.design.data.datapane.TableDataTreePane;
import com.fr.design.data.tabledata.ResponseDataSourceChange;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.i18n.DesignSizeI18nManager;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.menu.KeySetUtils;
@ -43,7 +44,8 @@ public class TableDataSourceAction extends TemplateComponentAction<JTemplate<?,
populate(tds);
}
};
final BasicDialog reportTableDataDialog = tableDataPane.showWindowWithCustomSize(SwingUtilities.getWindowAncestor(this.getEditingComponent()), null, new Dimension(1200, 600));
final BasicDialog reportTableDataDialog = tableDataPane.showWindowWithCustomSize(SwingUtilities.getWindowAncestor(this.getEditingComponent()), null,
DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.data.tabledata.dialog"));
reportTableDataDialog.addDialogActionListener(new DialogActionAdapter() {
@Override

12
designer-base/src/main/java/com/fr/design/actions/help/SystemInfoPane.java

@ -11,16 +11,20 @@ import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import com.fr.design.gui.icontainer.UITableScrollPane;
import com.fr.design.gui.itable.FineUITable;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fanruan.product.ProductConstants;
import static com.fine.theme.utils.FineUIScale.scale;
public class SystemInfoPane extends JPanel {
public SystemInfoPane() {
super(FRGUIPaneFactory.createBorderLayout());
DefaultTableModel tableModel = new DefaultTableModel();
JTable table = new JTable(tableModel) {
FineUITable table = new FineUITable(tableModel) {
public boolean isCellEditable(int row, int column) {
return false;
}
@ -57,10 +61,10 @@ public class SystemInfoPane extends JPanel {
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(0).setPreferredWidth(160);
columnModel.getColumn(1).setPreferredWidth(240);
columnModel.getColumn(0).setPreferredWidth(scale(160));
columnModel.getColumn(1).setPreferredWidth(scale(240));
add(new JScrollPane(table), BorderLayout.CENTER);
add(new UITableScrollPane(table), BorderLayout.CENTER);
}
/**

10
designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java

@ -41,6 +41,8 @@ import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ilist.CheckBoxListWithPartialSelect;
import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.gui.iscrollbar.UIBasicVerticalScrollBar;
import com.fr.design.gui.iscrollbar.UIScrollBar;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode;
@ -75,6 +77,7 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
import javax.swing.ToolTipManager;
@ -1108,7 +1111,12 @@ public class TableDataTreePane extends BasicTableDataTreePane {
}
// 可以半选的CheckBoxList
CheckBoxListWithPartialSelect tableDataCheckBoxPane = new CheckBoxListWithPartialSelect(selectedNameObjects);
UIScrollPane scrollPane = new UIScrollPane(tableDataCheckBoxPane);
UIScrollPane scrollPane = new UIScrollPane(tableDataCheckBoxPane) {
@Override
public UIScrollBar createVerticalScrollBar() {
return new UIBasicVerticalScrollBar(JScrollBar.VERTICAL);
}
};
UILabel tips = new UILabel(Toolkit.i18nText("Fine-Design_Basic_Select_Source_To_Remove"));
BasicPane basicPane = new BasicPane() {
@Override

20
designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java

@ -26,7 +26,7 @@ import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.gui.frpane.UITabbedPane;
import com.fr.design.gui.frpane.FineTabbedPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icontainer.UITableScrollPane;
import com.fr.design.gui.ilable.UILabel;
@ -101,6 +101,7 @@ public class PreviewTablePane extends BasicPane {
private static final int PREVIEW_TABLE_MIN_COLUMN_WIDTH = FineUIScale.scale(75);
private static final int PREVIEW_TABLE_WIDTH = FineUIScale.scale(610);
private static final int TAB_MAX_COUNT_WITH_LINE = 7;
/**
* 用于refreshLabel的鼠标监听
@ -679,7 +680,7 @@ public class PreviewTablePane extends BasicPane {
public static void previewMultiDataModels(NameDataModel[] nameDataModels) {
// tab窗口
UITabbedPane tabbedPane = new UITabbedPane();
FineTabbedPane.TabPaneBuilder tabbedPane = new FineTabbedPane.TabPaneBuilder();
for (NameDataModel nameDataModel : nameDataModels) {
// 单个结果集的展示面板
@ -704,10 +705,23 @@ public class PreviewTablePane extends BasicPane {
};
previewPane.setLayout(FRGUIPaneFactory.createBorderLayout());
previewPane.add(tabbedPane, BorderLayout.CENTER);
if (nameDataModels.length > 0) {
previewPane.add(tabbedPane.withHeadRatio(0.8f).withTabLayout(buildTabLayout(nameDataModels)).build(), BorderLayout.CENTER);
}
previewPane.showWindow(new JFrame()).setVisible(true);
}
private static int[] buildTabLayout(NameDataModel[] nameDataModels) {
int length = nameDataModels.length;
int size = (length + TAB_MAX_COUNT_WITH_LINE - 1) / TAB_MAX_COUNT_WITH_LINE;
int[] tabLayout = new int[size];
int index = 0;
for (int i = 0; i < length; i += TAB_MAX_COUNT_WITH_LINE) {
tabLayout[index ++] = Math.min(TAB_MAX_COUNT_WITH_LINE, length - i);
}
return tabLayout;
}
/**
* 直接预览存储过程的所有返回数据集没有实际值和显示值
*

7
designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/common/DesensitizationOpenPane.java

@ -1,5 +1,6 @@
package com.fr.design.data.datapane.preview.desensitization.view.common;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineUIUtils;
import com.fr.base.svg.IconUtils;
import com.fr.design.border.UITitledBorder;
@ -23,6 +24,7 @@ import java.net.URL;
import static com.fine.swing.ui.layout.Layouts.cell;
import static com.fine.swing.ui.layout.Layouts.column;
import static com.fine.swing.ui.layout.Layouts.row;
/**
* 启用数据脱敏的面板
@ -56,7 +58,7 @@ public class DesensitizationOpenPane extends JPanel {
// 启用数据脱敏的勾选框
desensitizeOpenCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_Desensitization_Opened"));
// 跳转帮助文档Label
hyperlinkLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/tip/tips"));
hyperlinkLabel = new UILabel(new LazyIcon("jump_to_references"));
hyperlinkLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Report_Desensitization_Open_Tips"));
hyperlinkLabel.addMouseListener(new MouseAdapter() {
@Override
@ -70,8 +72,7 @@ public class DesensitizationOpenPane extends JPanel {
}
}
});
panel.add(desensitizeOpenCheckBox);
panel.add(hyperlinkLabel);
panel.add(row(4, cell(desensitizeOpenCheckBox), cell(hyperlinkLabel)).getComponent());
// 提示Label
tipsLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_Desensitization_Opened_Tooltips"));

15
designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java

@ -2,6 +2,7 @@ package com.fr.design.data.datapane.preview.desensitization.view.rule;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineUIScale;
import com.fine.theme.utils.FineUIStyle;
import com.formdev.flatlaf.ui.FlatUIUtils;
import com.fr.base.svg.IconUtils;
import com.fr.data.desensitize.rule.DesensitizationRuleManager;
@ -12,6 +13,7 @@ import com.fr.design.data.datapane.preview.desensitization.view.common.ChooseMar
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itable.FineUITableCellEditor;
import com.fr.design.gui.itableeditorpane.UITableEditAction;
import com.fr.design.gui.itableeditorpane.UITableEditorPane;
import com.fr.design.gui.itableeditorpane.UITableModelAdapter;
@ -20,12 +22,10 @@ import com.fr.design.i18n.Toolkit;
import com.fr.stable.StringUtils;
import com.fr.stable.collections.CollectionUtils;
import javax.swing.AbstractCellEditor;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import java.awt.CardLayout;
@ -195,17 +195,15 @@ public class DesensitizationRuleChoosePane extends JPanel {
/**
* 规则状态展示页面
*/
private class DesensitizationRuleStatusPane extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
private class DesensitizationRuleStatusPane extends FineUITableCellEditor {
private UILabel ruleStatusLabel;
DesensitizationRuleStatusPane() {
// 规则状态
this.ruleStatusLabel = new UILabel();
this.ruleStatusLabel.setForeground(Color.RED);
this.ruleStatusLabel.setOpaque(true);
this.ruleStatusLabel.setBackground(FlatUIUtils.getUIColor("background.normal", Color.WHITE));
this.ruleStatusLabel.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIManager.getColor("defaultBorderColor")));
FineUIStyle.setStyle(ruleStatusLabel, FineUIStyle.LABEL_WARNING_TIP);
}
/**
@ -239,6 +237,9 @@ public class DesensitizationRuleChoosePane extends JPanel {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
refreshRuleStatus(getList().get(row));
JComponent c = (JComponent) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
ruleStatusLabel.setBorder(c.getBorder());
ruleStatusLabel.setBackground(c.getBackground());
return ruleStatusLabel;
}
}

11
designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java

@ -18,6 +18,7 @@ import com.fr.design.gui.icombobox.ComboCheckBox;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombocheckbox.UIComboCheckBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itable.FineUITableCellEditor;
import com.fr.design.gui.itableeditorpane.UITableEditAction;
import com.fr.design.gui.itableeditorpane.UITableModelAdapter;
import com.fr.design.gui.itextfield.UITextField;
@ -432,7 +433,6 @@ public class TableDataDesensitizationTableModel extends UITableModelAdapter<Tabl
protected void setLayoutAndAddComponents() {
// 使用BorderLayout,否则默认使用的FlowLayout会让整个下拉选框使用最小Size,然后TableCell这边会出现空白
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.add(getEditor(), BorderLayout.CENTER);
this.add(getLabel(), BorderLayout.EAST);
}
@ -449,17 +449,15 @@ public class TableDataDesensitizationTableModel extends UITableModelAdapter<Tabl
/**
* 规则状态展示页面
*/
private class DesensitizationRuleStatusPane extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
private class DesensitizationRuleStatusPane extends FineUITableCellEditor {
private UILabel ruleStatusLabel;
DesensitizationRuleStatusPane() {
// 规则状态
this.ruleStatusLabel = new UILabel();
this.ruleStatusLabel.setForeground(Color.RED);
this.ruleStatusLabel.setOpaque(true);
this.ruleStatusLabel.setBackground(FlatUIUtils.getUIColor("background.normal", Color.WHITE));
this.ruleStatusLabel.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIManager.getColor("defaultBorderColor")));
FineUIStyle.setStyle(ruleStatusLabel, FineUIStyle.LABEL_WARNING_TIP);
}
/**
@ -495,6 +493,9 @@ public class TableDataDesensitizationTableModel extends UITableModelAdapter<Tabl
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
refreshRuleStatus(getList().get(row));
JComponent c = (JComponent) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
ruleStatusLabel.setBorder(c.getBorder());
ruleStatusLabel.setBackground(c.getBackground());
return ruleStatusLabel;
}
}

111
designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/EmbeddedTableDataPane.java

@ -2,6 +2,7 @@ package com.fr.design.data.tabledata.tabledatapane;
import com.fine.theme.light.ui.FineTableHeaderUI;
import com.fine.theme.utils.FineUIScale;
import com.formdev.flatlaf.ui.FlatUIUtils;
import com.fr.data.impl.EmbeddedTableData;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.dialog.BasicDialog;
@ -18,18 +19,19 @@ import com.fr.stable.StringUtils;
import javax.swing.DefaultCellEditor;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
@ -67,6 +69,7 @@ public class EmbeddedTableDataPane extends AbstractTableDataPane<EmbeddedTableDa
// prepare the data in this way as default if no arguments is passed in
EmbeddedTableModel tableModel = new EmbeddedTableModel(new EmbeddedTableData());
dataJTable = new JTable(tableModel);
dataJTable.setBackground(FlatUIUtils.getUIColor("default.background", new Color(246, 248, 250)));
scrollPane = new UITableScrollPane(dataJTable);;
// 显示double,date类;渲染date类
@ -87,7 +90,6 @@ public class EmbeddedTableDataPane extends AbstractTableDataPane<EmbeddedTableDa
editbysingleclick(dataJTable, Integer.class);
// AUTO RESIZE
dataJTable.setAutoResizeMode(tableModel.getColumnCount() * PREVIEW_TABLE_MIN_COLUMN_WIDTH <= PREVIEW_TABLE_WIDTH ? JTable.AUTO_RESIZE_ALL_COLUMNS : JTable.AUTO_RESIZE_OFF);
dataJTable.setRowSelectionAllowed(true);
dataJTable.setColumnSelectionAllowed(true);
@ -102,6 +104,7 @@ public class EmbeddedTableDataPane extends AbstractTableDataPane<EmbeddedTableDa
selectedChanged();
}
});
addDataTableListener();
// 添加表模型监听器以监听行列变化更新按钮状态
tableModel.addTableModelListener(new TableModelListener() {
@ -113,37 +116,52 @@ public class EmbeddedTableDataPane extends AbstractTableDataPane<EmbeddedTableDa
this.add(column(LayoutConstants.VERTICAL_GAP, cell(getNorthPaneComponents()), cell(scrollPane).weight(1)).getComponent());
}
private void addDataTableListener() {
dataJTable.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
// kel:加上一个鼠标点击的监控,鼠标点击时,返回选中的行坐标和列坐标。
selectedChanged();
}
});
dataJTable.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
selectedChanged();
}
});
dataJTable.addComponentListener(new ComponentListener() {
@Override
public void componentResized(ComponentEvent e) {
adjustTableAutoResizeMode();
}
@Override
public void componentMoved(ComponentEvent e) {
}
@Override
public void componentShown(ComponentEvent e) {
}
@Override
public void componentHidden(ComponentEvent e) {
}
});
}
private void adjustTableAutoResizeMode() {
int previewTableWidth = scrollPane.getSize().width - FineUIScale.scale(MIN_CELL_WIDTH);
AbstractTableModel tableModel = (AbstractTableModel) dataJTable.getModel();
dataJTable.setAutoResizeMode((tableModel.getColumnCount() - 1) * PREVIEW_TABLE_MIN_COLUMN_WIDTH <= previewTableWidth ? JTable.AUTO_RESIZE_ALL_COLUMNS : JTable.AUTO_RESIZE_OFF);
}
private JPanel getNorthPaneComponents() {
// kel:在左上角加一个JLabel用来显示坐标,方便用户查看。
coordinatelabel = new UILabel("0/0,0/0");
coordinatelabel.setHorizontalAlignment(UILabel.CENTER);
// 表结构设置
UIButton columnSetButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Embedded_Table_Design"));
columnSetButton.setMnemonic('C');
columnSetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
final EmbeddedTableModel localDefaultModel = (EmbeddedTableModel) dataJTable.getModel();
final EmbeddedTableDataDefinedPane columnSetPane = new EmbeddedTableDataDefinedPane();
columnSetPane.populate(((EmbeddedTableModel) dataJTable.getModel()).getEditableTableData());
DialogActionAdapter l = new DialogActionAdapter() {
public void doOk() {
localDefaultModel.setEditableTableData(columnSetPane.update());
localDefaultModel.fireTableStructureChanged();
localDefaultModel.fireTableDataChanged();
tableStructureChanged();
selectedChanged();
dataJTable.setAutoResizeMode(localDefaultModel.getColumnCount() * PREVIEW_TABLE_MIN_COLUMN_WIDTH <= PREVIEW_TABLE_WIDTH ? JTable.AUTO_RESIZE_ALL_COLUMNS : JTable.AUTO_RESIZE_OFF);
dataJTable.repaint();
}
};
BasicDialog dlg = columnSetPane.showWindow(DesignerContext.getDesignerFrame(), l);
dlg.setAlwaysOnTop(true);
dlg.setVisible(true);
}
});
UIButton columnSetButton = initColumnSetButton();
// DataSourceEditor-Insert_Row
insertRowButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Utils_Insert_Row"));
@ -174,6 +192,35 @@ public class EmbeddedTableDataPane extends AbstractTableDataPane<EmbeddedTableDa
).getComponent();
}
private UIButton initColumnSetButton() {
UIButton columnSetButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Embedded_Table_Design"));
columnSetButton.setMnemonic('C');
columnSetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
final EmbeddedTableModel localDefaultModel = (EmbeddedTableModel) dataJTable.getModel();
final EmbeddedTableDataDefinedPane columnSetPane = new EmbeddedTableDataDefinedPane();
columnSetPane.populate(((EmbeddedTableModel) dataJTable.getModel()).getEditableTableData());
DialogActionAdapter l = new DialogActionAdapter() {
public void doOk() {
localDefaultModel.setEditableTableData(columnSetPane.update());
localDefaultModel.fireTableStructureChanged();
localDefaultModel.fireTableDataChanged();
tableStructureChanged();
selectedChanged();
adjustTableAutoResizeMode();
dataJTable.repaint();
}
};
BasicDialog dlg = columnSetPane.showWindow(DesignerContext.getDesignerFrame(), l);
dlg.setAlwaysOnTop(true);
dlg.setVisible(true);
}
});
return columnSetButton;
}
/**
* 更新按钮状态
*/
@ -253,11 +300,11 @@ public class EmbeddedTableDataPane extends AbstractTableDataPane<EmbeddedTableDa
tableColumn.setCellRenderer(new CellRenderer());
tableColumn.setMaxWidth(FineUIScale.scale(Math.max(dataJTable.getColumnCount(), MIN_CELL_WIDTH)));
// 没有列数据的时候,压缩行号
// 没有列数据的时候, 隐藏行号列
if (dataJTable.getColumnModel().getColumnCount() > 1) {
dataJTable.getTableHeader().setPreferredSize(new Dimension(super.getWidth(), FineUIScale.scale((Integer) UIManager.get("Table.rowHeight"))));
dataJTable.getTableHeader().setVisible(true);
} else {
dataJTable.getTableHeader().setPreferredSize(new Dimension(super.getWidth(), FineUIScale.scale(4)));
dataJTable.getTableHeader().setVisible(false);
}
}

14
designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java

@ -10,6 +10,8 @@ import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ilist.UIList;
import com.fr.design.gui.iscrollbar.UIBasicVerticalScrollBar;
import com.fr.design.gui.iscrollbar.UIScrollBar;
import com.fr.design.gui.iscrollbar.UIScrollBarUI;
import com.fr.design.gui.itree.checkboxtree.NullTristateCheckBox;
import com.fr.design.gui.itree.checkboxtree.TristateCheckBox;
@ -21,10 +23,10 @@ import com.fr.log.FineLoggerFactory;
import org.jetbrains.annotations.Nullable;
import javax.swing.AbstractListModel;
import javax.swing.BorderFactory;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Window;
@ -83,11 +85,13 @@ public class SaveSomeTemplatePane extends BasicPane {
UILabel tip = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Select_The_Source_To_Save"));
this.add(tip, BorderLayout.NORTH);
templatesChoosePane = FRGUIPaneFactory.createBorderLayout_S_Pane();
UIScrollPane scrollPane = new UIScrollPane(templatesChoosePane);
UIScrollPane scrollPane = new UIScrollPane(templatesChoosePane) {
@Override
public UIScrollBar createVerticalScrollBar() {
return new UIBasicVerticalScrollBar(JScrollBar.VERTICAL);
}
};
scrollPane.setBorder(new FineRoundBorder());
if (SystemInfo.isWindows) {
scrollPane.getVerticalScrollBar().setUI(new UIScrollBarUI());
}
this.add(scrollPane, BorderLayout.CENTER);
this.isJudgeCurrentEditingTemplate = isNeedTojudgeCurrent;
}

40
designer-base/src/main/java/com/fr/design/gui/frpane/tree/layer/config/LayerDependenceSettingPane.java

@ -1,9 +1,10 @@
package com.fr.design.gui.frpane.tree.layer.config;
import com.fine.theme.light.ui.FineTableHeaderUI;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.icontainer.UITableScrollPane;
import com.fr.design.present.dict.TableDataDictPane;
import com.fr.form.ui.tree.LayerDependence;
@ -126,7 +127,7 @@ public class LayerDependenceSettingPane extends JPanel implements ItemListener {
buttonPanel.add(delButton);
this.add(buttonPanel, BorderLayout.NORTH);
//添加Table的panel
JScrollPane tablePanel = new JScrollPane(dependenceTable);
UITableScrollPane tablePanel = new UITableScrollPane(dependenceTable);
this.add(tablePanel, BorderLayout.CENTER);
@ -177,23 +178,21 @@ public class LayerDependenceSettingPane extends JPanel implements ItemListener {
/**
* 第一列renderer
*/
private static final class FirstRenderer extends UILabel implements TableCellRenderer {
private static final class FirstRenderer extends FineTableHeaderUI.TableRenderer {
public FirstRenderer() {
this.setOpaque(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (value != null) {
//value是用户选择的字段索引值,从1开始的
this.setText(String.valueOf(value));
} else {
this.setText("");
}
if (hasFocus) {
this.setBorder(UIManager.getBorder("Table.focusCelHighlightBorder"));
label.setText(String.valueOf(value));
} else {
this.setBorder(null);
label.setText("");
}
return this;
return label;
}
}
@ -201,14 +200,14 @@ public class LayerDependenceSettingPane extends JPanel implements ItemListener {
* 第二列renderer
* 由于从model中获取的数据是数据集列的索引值,这里要转换为列的名称
*/
private static final class FieldRenderer extends UILabel implements TableCellRenderer {
private static final class FieldRenderer extends FineTableHeaderUI.TableRenderer {
//用于将字段索引转换为字段名;保存改pane,是为了当用户选择其他数据集时,renderer可同步更新
private TableDataDictPane tableDataDictPane;
public FieldRenderer(TableDataDictPane tableDataDictPane) {
this.tableDataDictPane = tableDataDictPane;
this.setOpaque(true);
}
/**
@ -217,20 +216,15 @@ public class LayerDependenceSettingPane extends JPanel implements ItemListener {
*/
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (value != null) {
List<String> columnNames = getColumnNameList(this.tableDataDictPane);
//value是用户选择的字段索引值,从1开始的
this.setText(columnNames.get(Integer.valueOf(String.valueOf(value))));
} else {
this.setText("");
}
if (hasFocus) {
this.setBorder(UIManager.getBorder("Table.focusCelHighlightBorder"));
label.setText(columnNames.get(Integer.valueOf(String.valueOf(value))));
} else {
this.setBorder(null);
label.setText("");
}
return this;
return label;
}
}

1
designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java

@ -259,6 +259,7 @@ public class UIComboCheckBox extends JComponent implements UIObserver, GlobalNam
private void togglePopup() {
if (this.arrowButton.isEnabled()) {
popup.setBorder(new FineRoundBorder());
popup.setPreferredSize(new Dimension(getWidth(), this.popup.getPreferredSize().height));
popup.show(this, 0, getHeight());
}
}

22
designer-base/src/main/java/com/fr/design/gui/iscrollbar/UIBasicVerticalScrollBar.java

@ -0,0 +1,22 @@
package com.fr.design.gui.iscrollbar;
/**
* 解决 Windows 下垂直滚动条不显示的临时方案替换 UI
*
* @author lemon
* @since
* Created on
*/
public class UIBasicVerticalScrollBar extends UIScrollBar {
private static final String UI_CLASS_ID = "BasicVerticalScrollBarUI";
private static final long serialVersionUID = 1L;
public UIBasicVerticalScrollBar(int orientation) {
super(orientation);
}
public String getUIClassID() {
return UI_CLASS_ID;
}
}

6
designer-base/src/main/java/com/fr/design/gui/iscrollbar/UIScrollBarUI.java

@ -56,6 +56,7 @@ public class UIScrollBarUI extends ScrollBarUI implements LayoutManager, SwingCo
protected Color thumbLightShadowColor;
protected Color thumbDarkShadowColor;
protected Color thumbColor;
protected Color pressedThumbColor;
protected Color trackColor;
protected Color trackHighlightColor;
@ -139,6 +140,7 @@ public class UIScrollBarUI extends ScrollBarUI implements LayoutManager, SwingCo
thumbLightShadowColor = UIManager.getColor("ScrollBar.thumbShadow");
thumbDarkShadowColor = UIManager.getColor("ScrollBar.thumbDarkShadow");
thumbColor = UIManager.getColor("ScrollBar.thumb");
pressedThumbColor = UIManager.getColor( "ScrollBar.pressedThumbColor" );
trackColor = UIManager.getColor("ScrollBar.track");
trackHighlightColor = UIManager.getColor("ScrollBar.trackHighlight");
}
@ -472,9 +474,9 @@ public class UIScrollBarUI extends ScrollBarUI implements LayoutManager, SwingCo
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.translate(thumbBounds.x, thumbBounds.y);
Color color = isPressing ? UIConstants.LINE_COLOR : UIConstants.BARNOMAL;
Color color = isPressing ? pressedThumbColor : thumbColor;
g2.setColor(color);
g2.fillRoundRect(1, 1, width - 2, height - 2, UIConstants.LARGEARC, UIConstants.LARGEARC);
g2.fillRoundRect(1, 1, width - 4, height - 4, UIConstants.LARGEARC, UIConstants.LARGEARC);
}

33
designer-base/src/main/java/com/fr/design/gui/itable/FineUITableCellEditor.java

@ -0,0 +1,33 @@
package com.fr.design.gui.itable;
import com.fine.theme.light.ui.FineTableHeaderUI;
import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import java.awt.Component;
/**
* TableCellEditor 应用 {@link FineTableHeaderUI.TableRenderer}
*
* @author lemon
* @since
* Created on 2024/09/10
*/
public class FineUITableCellEditor extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
return null;
}
@Override
public Object getCellEditorValue() {
return null;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
return new FineTableHeaderUI.TableRenderer().getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}

10
designer-base/src/main/java/com/fr/design/javascript/ExportJavaScriptPane.java

@ -16,6 +16,7 @@ import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.UIComboBoxRenderer;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itable.FineUITableCellEditor;
import com.fr.design.gui.itableeditorpane.ParameterTableModel;
import com.fr.design.gui.itableeditorpane.UITableEditAction;
import com.fr.design.gui.itableeditorpane.UITableEditorPane;
@ -301,9 +302,6 @@ public class ExportJavaScriptPane extends AbstractHyperLinkPane<ExportJavaScript
this.setDefaultEditor(ParameterCombobox.class, new ParameterCombobox());
this.setDefaultEditor(ParameterSettingButton.class, new ParameterSettingButton());
this.setDefaultRenderer(ParameterSettingButton.class, new ParameterSettingButton());
this.createTable().getColumnModel().getColumn(2).setMaxWidth(scale(60));
this.createTable().getColumnModel().getColumn(4).setMaxWidth(scale(60));
this.createTable().getColumnModel().getColumn(5).setMaxWidth(scale(50));
}
@Override
@ -643,7 +641,7 @@ public class ExportJavaScriptPane extends AbstractHyperLinkPane<ExportJavaScript
}
// 参数设置按钮
class ParameterSettingButton extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
class ParameterSettingButton extends FineUITableCellEditor {
private static final long serialVersionUID = 4021592871993049137L;
private UIButton paraButton;
@ -695,7 +693,7 @@ public class ExportJavaScriptPane extends AbstractHyperLinkPane<ExportJavaScript
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (getList().get(row) == null || getList().get(row).isExtendParameters()) {
return EMPTY_LABEL;
return null;
}
ParameterProvider[] providers = (ParameterProvider[]) value;
if (providers != null) {
@ -712,7 +710,7 @@ public class ExportJavaScriptPane extends AbstractHyperLinkPane<ExportJavaScript
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (getList().get(row) == null || getList().get(row).isExtendParameters()) {
return EMPTY_LABEL;
return super.getTableCellRendererComponent(table, null, isSelected, hasFocus, row, column);
}
return paraButton;
}

3
designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java

@ -1,6 +1,7 @@
package com.fr.design.mainframe.check;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineUIUtils;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.base.BaseUtils;
import com.fr.design.dialog.FineJOptionPane;
@ -200,7 +201,7 @@ public class CheckButton extends UIButton {
dialog = new JDialog();
dialog.setTitle(Toolkit.i18nText("Fine_Designer_Check_Font"));
dialog.setModal(true);
dialog.setSize(DesignSizeI18nManager.getInstance().i18nDimension(this.getClass().getName()));
dialog.setSize(FineUIUtils.getScaledI18nDimension(this.getClass().getName()));
JPanel jp = new JPanel();
JPanel upPane = new JPanel();
JPanel downPane = new JPanel(new BorderLayout());

5
designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java

@ -3,6 +3,7 @@ package com.fr.design.write.submit;
import com.fine.swing.ui.layout.Layouts;
import com.fine.theme.icon.LazyIcon;
import com.fine.swing.ui.layout.Spacer;
import com.fine.theme.light.ui.FineRoundBorder;
import com.fine.theme.light.ui.FineTableHeaderUI;
import com.fine.theme.utils.FineClientProperties;
import com.fine.theme.utils.FineUIScale;
@ -508,7 +509,9 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return super.value2Text(value);
}
};
bPane.add(new JScrollPane(list), BorderLayout.CENTER);
JScrollPane scrollPane = new JScrollPane(list);
scrollPane.setBorder(new FineRoundBorder());
bPane.add(scrollPane, BorderLayout.CENTER);
BasicDialog dlg = bPane.showSmallWindow(SwingUtilities.getWindowAncestor(DBManipulationPane.this), new DialogActionAdapter() {
@Override

3
designer-base/src/main/resources/com/fine/theme/icon/tip/jump_to_references.svg

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.24687 23.3047C1.21273 17.3662 2.75654 9.28175 8.69507 5.24761C14.6336 1.21346 22.718 2.75727 26.7522 8.6958C30.7863 14.6343 29.2425 22.7188 23.304 26.7529C17.3655 30.7871 9.28102 29.2433 5.24687 23.3047ZM3.5925 24.4286C-1.06233 17.5764 0.719001 8.24806 7.57122 3.59323C14.4234 -1.0616 23.7517 0.719734 28.4066 7.57195C33.0614 14.4242 31.2801 23.7525 24.4279 28.4073C17.5756 33.0621 8.24733 31.2808 3.5925 24.4286ZM17.5 24.5C17.5 25.3284 16.8284 26 16 26C15.1716 26 14.5 25.3284 14.5 24.5C14.5 23.6716 15.1716 23 16 23C16.8284 23 17.5 23.6716 17.5 24.5ZM11.5529 13.4806C12.1537 13.4806 12.6201 12.9793 12.7368 12.39C13.1359 10.3744 14.8075 9.36148 16.6523 9.57434C18.3451 9.76965 19.2565 10.7137 19.3867 12.4064C19.2565 13.2527 18.5404 14.3269 17.2383 15.629C15.7409 17.1264 14.9922 18.4611 14.9922 19.6329V19.9747C14.9922 20.541 15.4513 21.0001 16.0176 21.0001H16.1641C16.6495 21.0001 17.043 20.6066 17.043 20.1212C17.043 19.0795 17.7917 17.8751 19.2891 16.5079C20.9167 15.0105 21.7305 13.6434 21.7305 12.4064C21.6003 9.21627 19.8099 7.55611 16.3594 7.4259C12.744 7.36663 10.8013 9.03395 10.5311 12.4278C10.4848 13.0102 10.9687 13.4806 11.5529 13.4806Z" fill="#0A1C38" fill-opacity="0.9"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

1
designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json

@ -460,6 +460,7 @@
"waiting":"tip/waiting.svg",
"information":"tip/information.svg",
"new_information":"tip/new_information.svg",
"jump_to_references":"tip/jump_to_references.svg",
"success":"tip/success.svg",
"warning":"tip/warning.svg",
"layout_top": "layout/layout_top.svg",

1
designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLaf.properties

@ -27,6 +27,7 @@ RadioButtonUI=com.formdev.flatlaf.ui.FlatRadioButtonUI
RadioButtonMenuItemUI=com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI
RootPaneUI=com.formdev.flatlaf.ui.FlatRootPaneUI
ScrollBarUI=com.formdev.flatlaf.ui.FlatScrollBarUI
BasicVerticalScrollBarUI=com.fr.design.gui.iscrollbar.UIScrollBarUI
ScrollPaneUI=com.formdev.flatlaf.ui.FlatScrollPaneUI
SeparatorUI=com.formdev.flatlaf.ui.FlatSeparatorUI
SliderUI=com.fine.theme.light.ui.FineSliderUI

1
designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties

@ -37,6 +37,7 @@ com.fr.design.ds.column.cellEditor.pane=900*600
com.fr.design.actions.reportWebAttr.dialog=800*630
com.fr.design.actions.printingSetting.dialog=700*600
com.fr.design.data.datapane.preview.dialog=700*600
com.fr.design.data.tabledata.dialog=1200*600

1
designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties

@ -36,6 +36,7 @@ com.fr.design.ds.column.cellEditor.pane=900*600
com.fr.design.actions.reportWebAttr.dialog=700*630
com.fr.design.actions.printingSetting.dialog=700*600
com.fr.design.data.datapane.preview.dialog=700*600
com.fr.design.data.tabledata.dialog=900*600

1
designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties

@ -36,6 +36,7 @@ com.fr.design.ds.column.cellEditor.pane=900*600
com.fr.design.actions.reportWebAttr.dialog=700*630
com.fr.design.actions.printingSetting.dialog=700*600
com.fr.design.data.datapane.preview.dialog=700*600
com.fr.design.data.tabledata.dialog=900*600

1
designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties

@ -36,6 +36,7 @@ com.fr.design.ds.column.cellEditor.pane=700*600
com.fr.design.actions.reportWebAttr.dialog=660*600
com.fr.design.actions.printingSetting.dialog=660*600
com.fr.design.data.datapane.preview.dialog=660*600
com.fr.design.data.tabledata.dialog=900*600

1
designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties

@ -35,6 +35,7 @@ com.fr.design.ds.column.cellEditor.pane=700*600
com.fr.design.actions.reportWebAttr.dialog=700*630
com.fr.design.actions.printingSetting.dialog=700*600
com.fr.design.data.datapane.preview.dialog=700*600
com.fr.design.data.tabledata.dialog=900*600

4
designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java

@ -50,6 +50,8 @@ import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import static com.fine.theme.utils.FineUIScale.scale;
public class SmartInsertDBManipulationPane extends DBManipulationPane {
private static final Selection NO_SELECTION = new CellSelection(-1, -1, -1, -1);
private ElementCasePane ePane;
@ -352,7 +354,7 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane {
* set Width
*/
TableColumn column0 = table.getColumnModel().getColumn(0);
column0.setMaxWidth(LEFT_COLUMN_MAX_WIDTH);
column0.setMaxWidth(scale(LEFT_COLUMN_MAX_WIDTH));
ColumnNameTableCellRenderer cellRenderer = new ColumnNameTableCellRenderer();
cellRenderer.setHorizontalAlignment(SwingConstants.LEFT);
column0.setCellRenderer(new BooleanRenderer());

Loading…
Cancel
Save