positiontable.java
来自「world wind java sdk 源码」· Java 代码 · 共 497 行 · 第 1/2 页
JAVA
497 行
{ return Angle.fromDMS(string); } catch(Exception ignore) { return null; } } else { try { Number number = NumberFormat.getInstance().parse(string.trim()); return Angle.fromDegrees(number.doubleValue()); } catch (Exception ignore) { return null; } } } private String makeAngleDescription(double degrees) { return SAR2.formatAngle(this.angleFormat, Angle.fromDegrees(degrees)); } private String makeElevationDescription(double metersElevation) { String s; if (SAR2.UNIT_IMPERIAL.equals(this.elevationUnit)) s = NumberFormat.getInstance().format(SAR2.metersToFeet(metersElevation)); else // Default to metric units. s = NumberFormat.getInstance().format(metersElevation); return s; } private static class AltitudeHeaderRenderer implements TableCellRenderer { private TableCellRenderer delegate; private PositionTable table; public AltitudeHeaderRenderer(TableCellRenderer delegate, PositionTable table) { this.delegate = delegate; this.table = table; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (this.delegate == null) return null; Component c = this.delegate.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (c == null || !(c instanceof JLabel)) return c; JLabel label = (JLabel) c; if (label.getText() == null) return c; if (SAR2.UNIT_IMPERIAL.equals(this.table.elevationUnit)) label.setText(label.getText() + " (ft)"); else // Default to metric units. label.setText(label.getText() + " (m)"); return label; } } private static class AngleHeaderRenderer implements TableCellRenderer { private TableCellRenderer delegate; private PositionTable table; public AngleHeaderRenderer(TableCellRenderer delegate, PositionTable table) { this.delegate = delegate; this.table = table; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (this.delegate == null) return null; Component c = this.delegate.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (c == null || !(c instanceof JLabel)) return c; JLabel label = (JLabel) c; if (label.getText() == null) return c; if (Angle.ANGLE_FORMAT_DMS.equals(this.table.angleFormat)) label.setText(label.getText() + " (dms)"); else // Default to decimal degrees. label.setText(label.getText() + " (dd)"); return label; } } private static class AngleCellRenderer extends DefaultTableCellRenderer { private PositionTable table; private AngleCellRenderer(PositionTable table) { this.table = table; setHorizontalAlignment(SwingConstants.RIGHT); } public void setValue(Object value) { setText(value != null ? this.table.makeAngleDescription((Double)value) : ""); } } private static class AltitudeCellRenderer extends DefaultTableCellRenderer { private PositionTable table; private AltitudeCellRenderer(PositionTable table) { this.table = table; setHorizontalAlignment(SwingConstants.RIGHT); } protected void setValue(Object value) { setText(this.table.makeElevationDescription((Double) value)); } } private static class GeneralCellEditor extends DefaultCellEditor { private PositionTable table; private Object value; public GeneralCellEditor(JTextField textField, PositionTable table) { super(textField); this.table = table; } public PositionTable getTable() { return table; } public Object getCellEditorValue() { return this.value; } public boolean stopCellEditing() { String s = (String) super.getCellEditorValue(); try { this.value = this.validateEditorText(s); } catch (Exception e) { ((JComponent) getComponent()).setBorder(new LineBorder(Color.red)); return false; } return super.stopCellEditing(); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { ((JComponent) getComponent()).setBorder(new LineBorder(Color.black)); this.value = null; try { this.value = this.createEditorText(value); } catch (Exception e) { return null; } return super.getTableCellEditorComponent(table, this.value, isSelected, row, column); } protected Object validateEditorText(String text) throws Exception { return text; } protected String createEditorText(Object value) throws Exception { return value.toString(); } } private class AngleCellEditor extends GeneralCellEditor { double min, max; public AngleCellEditor(PositionTable table, double min, double max) { super(new JTextField(), table); this.min = min; this.max = max; ((JTextField) getComponent()).setHorizontalAlignment(JTextField.RIGHT); } protected Object validateEditorText(String text) throws Exception { Angle angle = this.getTable().toAngle(text); if (angle == null) throw new IllegalArgumentException(text); if (angle.degrees < min || angle.degrees > max) throw new IllegalArgumentException(text); return text; } protected String createEditorText(Object value) throws Exception { String text = this.getTable().makeAngleDescription((Double) value); text = text.replaceAll("[D|d|\u00B0|'|\u2019|\"|\u201d]", " ").replaceAll("\\s+", " "); return text; } } private static class AltitudeCellEditor extends GeneralCellEditor { public AltitudeCellEditor(PositionTable table) { super(new JTextField(), table); ((JTextField) getComponent()).setHorizontalAlignment(JTextField.RIGHT); } protected Object validateEditorText(String text) throws Exception { Number number = NumberFormat.getInstance().parse(text); return number.doubleValue(); } protected String createEditorText(Object value) throws Exception { return this.getTable().makeElevationDescription((Double) value); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?