Browse Source

无jira任务 代码质量

newui
vito 9 months ago
parent
commit
f80e26f595
  1. 49
      designer-base/src/main/java/com/fr/design/gui/imenutable/UIMenuTable.java
  2. 85
      designer-base/src/main/java/com/fr/design/gui/itable/UITable.java

49
designer-base/src/main/java/com/fr/design/gui/imenutable/UIMenuTable.java

@ -6,17 +6,10 @@ import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.dialog.UIDialog;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itable.UITable;
import com.fr.design.hyperlink.ReportletHyperlinkPane;
import com.fr.design.hyperlink.WebHyperlinkPane;
import com.fr.design.javascript.EmailPane;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.js.EmailJavaScript;
import com.fr.js.ReportletHyperlink;
import com.fr.js.WebHyperlink;
import org.jetbrains.annotations.NotNull;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
@ -27,10 +20,10 @@ import javax.swing.table.TableCellRenderer;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;
public class UIMenuTable extends JTable {
private static final int STEP = 2;
protected int selectedRowIndex = -1;
protected int rollOverRowIndex = -1;
protected int draggingIndex = -1;
@ -201,47 +194,35 @@ public class UIMenuTable extends JTable {
this.draggingIndex = rowIndex;
}
/**
* 触发变更通知
*/
public void fireTargetChanged() {
repaint();
Object[] listeners = listenerList.getListenerList();
for (int i = listeners.length - 2; i >= 0; i -= 2) {
for (int i = listeners.length - STEP; i >= 0; i -= STEP) {
if (listeners[i] == ChangeListener.class) {
((ChangeListener) listeners[i + 1]).stateChanged(new ChangeEvent(this));
}
}
}
/**
* 添加变更监听
*
* @param l 监听对象
*/
public void addChangeListener(ChangeListener l) {
this.listenerList.add(ChangeListener.class, l);
}
/**
* 删除变更监听
*
* @param l 监听对象
*/
public void removeChangeListener(ChangeListener l) {
this.listenerList.remove(ChangeListener.class, l);
}
public static void main(String... args) {
JFrame jf = new JFrame("test");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = (JPanel) jf.getContentPane();
content.setLayout(new BorderLayout());
List<UIMenuNameableCreator> data = new ArrayList<UIMenuNameableCreator>();
UIMenuNameableCreator reportlet = new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Reportlet"),
new ReportletHyperlink(), ReportletHyperlinkPane.class);
UIMenuNameableCreator email = new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Email"),
new EmailJavaScript(), EmailPane.class);
UIMenuNameableCreator web = new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Hyperlink_Web_Link"),
new WebHyperlink(), WebHyperlinkPane.class);
data.add(reportlet);
data.add(email);
data.add(web);
UIMenuTable pane = new UIMenuTable();
pane.populateBean(data);
content.add(pane, BorderLayout.CENTER);
GUICoreUtils.centerWindow(jf);
jf.setSize(400, 400);
jf.setVisible(true);
}
}

85
designer-base/src/main/java/com/fr/design/gui/itable/UITable.java

@ -5,37 +5,33 @@ import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.utils.gui.GUICoreUtils;
import org.jetbrains.annotations.NotNull;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.TableUI;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
public class UITable extends JTable implements UIObserver {
private static final int OFF_LEFT = 10;
private static final int STEP = 2;
private static final int DEFAULT_ROW_HEIGHT = 20;
private UIObserverListener uiObserverListener;
UITableEditor editor;
@ -54,8 +50,6 @@ public class UITable extends JTable implements UIObserver {
initComponents();
iniListener();
shouldResponseAwt = false;
// kunsnat: 屏蔽: 对于下拉框, 无法等待选择结果之后在stop..
// Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK);
}
public UITable(int columnSize, boolean needAWTEventListener) {
@ -63,7 +57,12 @@ public class UITable extends JTable implements UIObserver {
shouldResponseAwt = needAWTEventListener;
isEditingStopped = true;
if (needAWTEventListener) {
Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK);
Toolkit.getDefaultToolkit().addAWTEventListener(event -> {
if (!UITable.this.isShowing()) {
return;
}
doSomeInAll(event);
}, AWTEvent.MOUSE_EVENT_MASK);
this.addFocusListener(new FocusAdapter() {
public void focusGained(FocusEvent e) {
isEditingStopped = false;
@ -87,20 +86,16 @@ public class UITable extends JTable implements UIObserver {
}
/**
* 传入列表数据
*
* @param values 数据
*/
public void populateBean(List<Object[]> values) {
getTableDataModel().populateBean(values);
}
private AWTEventListener awt = new AWTEventListener() {
public void eventDispatched(AWTEvent event) {
if (!UITable.this.isShowing()) {
return;
}
doSomeInAll(event);
}
};
private void doSomeInAll(AWTEvent event) {
Rectangle bounds = new Rectangle(getLocationOnScreen().x, getLocationOnScreen().y, getWidth(), getHeight());
if (event instanceof MouseEvent) {
@ -118,6 +113,11 @@ public class UITable extends JTable implements UIObserver {
}
}
/**
* 获取模型中数据
*
* @return 数据
*/
public List<Object[]> updateBean() {
return getTableDataModel().updateBean();
}
@ -223,7 +223,7 @@ public class UITable extends JTable implements UIObserver {
setBackground(UIConstants.NORMAL_BACKGROUND);
setDefaultEditor(UITable.class, editor);
setDefaultRenderer(UITable.class, new UITableRender());
// setUI(getUI());
setUI(getUI());
TableColumn deleteTableColumn = new TableColumn(getTableDataModel().getColumnCount());
deleteTableColumn.setCellEditor(null);
@ -243,14 +243,11 @@ public class UITable extends JTable implements UIObserver {
private void iniListener() {
if (shouldResponseChangeListener()) {
this.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
if (uiObserverListener == null) {
return;
}
uiObserverListener.doChange();
this.addChangeListener(e -> {
if (uiObserverListener == null) {
return;
}
uiObserverListener.doChange();
});
}
}
@ -295,6 +292,11 @@ public class UITable extends JTable implements UIObserver {
return new UITableUI();
}
@Override
public TableCellEditor getDefaultEditor(Class<?> columnClass) {
return super.getDefaultEditor(UITable.class);
}
@Override
public TableCellRenderer getDefaultRenderer(Class<?> columnClass) {
// 处理null的情况用于创建时未指定数据结构的情况
@ -342,7 +344,7 @@ public class UITable extends JTable implements UIObserver {
repaint();
Object[] listeners = listenerList.getListenerList();
for (int i = listeners.length - 2; i >= 0; i -= 2) {
for (int i = listeners.length - STEP; i >= 0; i -= STEP) {
if (listeners[i] == ChangeListener.class) {
((ChangeListener) listeners[i + 1]).stateChanged(new ChangeEvent(this));
}
@ -366,31 +368,4 @@ public class UITable extends JTable implements UIObserver {
public void removeChangeListener(ChangeListener l) {
this.listenerList.remove(ChangeListener.class, l);
}
/**
* 测试主函数
*
* @param args 参数
*/
public static void main(String... args) {
JFrame jf = new JFrame("test");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = (JPanel) jf.getContentPane();
content.setLayout(new BorderLayout());
List<Object[]> data = new ArrayList<Object[]>();
String[] a = {"1", "11"};
String[] b = {"2", "22"};
String[] c = {"3", "33"};
String[] d = {"4", "44"};
data.add(a);
data.add(b);
data.add(c);
data.add(d);
UITable pane = new UITable(2);
pane.populateBean(data);
content.add(pane, BorderLayout.CENTER);
GUICoreUtils.centerWindow(jf);
jf.setSize(400, 400);
jf.setVisible(true);
}
}
}

Loading…
Cancel
Save