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 + -
显示快捷键?