⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gridbagtester.java

📁 < ProJavaProgrammingSecondEdition> 书中例程源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
          break;
        case COMPONENT_WIDTH:
          value = new Integer(comp.getSize().width);
          break;
        case COMPONENT_HEIGHT:
          value = new Integer(comp.getSize().height);
          break;
        case COMPONENT_MINSIZE:
          value = comp.getMinimumSize();
          break;
        case COMPONENT_PREFSIZE:
          value = comp.getPreferredSize();
          break;
        case GRIDX:
          value = new Integer(gbc.gridx);
          break;
        case GRIDY:
          value = new Integer(gbc.gridy);
          break;
        case GRIDWIDTH:
          value = new Integer(gbc.gridwidth);
          break;
        case GRIDHEIGHT:
          value = new Integer(gbc.gridheight);
          break;
        case FILL:
          value = new Integer(gbc.fill);
          break;
        case ANCHOR:
          value = new Integer(gbc.anchor);
          break;
        case IPADX:
          value = new Integer(gbc.ipadx);
          break;
        case IPADY:
          value = new Integer(gbc.ipady);
          break;
        case WEIGHTX:
          value = new Double(gbc.weightx);
          break;
        case WEIGHTY:
          value = new Double(gbc.weighty);
          break;
        case INSETS_TOP:
          value = new Integer(gbc.insets.top);
          break;
        case INSETS_LEFT:
          value = new Integer(gbc.insets.left);
          break;
        case INSETS_BOTTOM:
          value = new Integer(gbc.insets.bottom);
          break;
        case INSETS_RIGHT:
          value = new Integer(gbc.insets.right);
          break;
      }
      return value;
    }

    public void setValueAt(Object value, int row, int column) {
      Component comp = container.getComponents()[row];
      GridBagConstraints gbc = manager.getConstraints(comp);
      switch (column) {
        case COMPONENT_NAME:
          comp.setName((String)value);
          break;
        case COMPONENT_X:
          comp.setLocation(((Integer)value).intValue(),
            comp.getLocation().y);
          break;
        case COMPONENT_Y:
          comp.setLocation(comp.getLocation().x,
            ((Integer)value).intValue());
          break;
        case COMPONENT_WIDTH:
          comp.setSize(((Integer)value).intValue(),
            comp.getSize().width);
          break;
        case COMPONENT_HEIGHT:
          comp.setSize(comp.getSize().height,
            ((Integer)value).intValue());
          break;
        case GRIDX:
          gbc.gridx = ((Integer)value).intValue();
          break;
        case GRIDY:
          gbc.gridy = ((Integer)value).intValue();
          break;
        case GRIDWIDTH:
          gbc.gridwidth =
            ((Integer)value).intValue();
          break;
        case GRIDHEIGHT:
          gbc.gridheight =
            ((Integer)value).intValue();
          break;
        case FILL:
          gbc.fill = ((Integer)value).intValue();
          break;
        case ANCHOR:
          gbc.anchor =
            ((Integer)value).intValue();
          break;
        case IPADX:
          gbc.ipadx = ((Integer)value).intValue();
          break;
        case IPADY:
          gbc.ipady = ((Integer)value).intValue();
          break;
        case WEIGHTX:
          gbc.weightx =
            ((Double)value).doubleValue();
          break;
        case WEIGHTY:
          gbc.weighty =
            ((Double)value).doubleValue();
          break;
        case INSETS_TOP:
          gbc.insets.top =
            ((Integer)value).intValue();
          break;
        case INSETS_LEFT:
          gbc.insets.left =
            ((Integer)value).intValue();
          break;
        case INSETS_BOTTOM:
          gbc.insets.bottom =
            ((Integer)value).intValue();
          break;
        case INSETS_RIGHT:
          gbc.insets.right =
            ((Integer)value).intValue();
          break;
      }
      manager.setConstraints(comp, gbc);
      refreshAllTables();
    }

    public String getColumnName(int column) {
      return headers[column];
    }

    public Class getColumnClass(int column) {
      Class dataType = Object.class;
      switch (column) {
        case COMPONENT_NAME:
          break;
        case COMPONENT_X:
        case COMPONENT_Y:
          dataType = Integer.class;
          break;
        case COMPONENT_WIDTH:
        case COMPONENT_HEIGHT:
          dataType = Integer.class;
          break;
        case COMPONENT_MINSIZE:
        case COMPONENT_PREFSIZE:
          dataType = Dimension.class;
          break;
        case GRIDX:
        case GRIDY:
          break;
        case GRIDWIDTH:
        case GRIDHEIGHT:
          break;
        case FILL:
          break;
        case ANCHOR:
          break;
        case IPADX:
        case IPADY:
          dataType = Integer.class;
          break;
        case WEIGHTX:
        case WEIGHTY:
          dataType = Double.class;
          break;
        case INSETS_TOP:
        case INSETS_LEFT:
        case INSETS_BOTTOM:
        case INSETS_RIGHT:
          dataType = Integer.class;
          break;
      }
      return dataType;
    }
  }

  class DoubleCellEditor extends DefaultCellEditor {

    public DoubleCellEditor() {
      super(new NumericTextField(5, true));
    }

    public Object getCellEditorValue() {
      NumericTextField ntf = (NumericTextField)getComponent();
      return new Double(ntf.getText());
    }

  }

  class IntegerCellEditor extends DefaultCellEditor {

    public IntegerCellEditor() {
      super(new NumericTextField(5, false));
    }

    public Object getCellEditorValue() {
      NumericTextField ntf = (NumericTextField)getComponent();
      return new Integer(ntf.getText());
    }

  }

  class DimensionCellRenderer extends DefaultTableCellRenderer {

    public void setValue(Object value) {
      Dimension size = (Dimension)value;
      super.setValue("(" + size.width + "," +
          size.height + ")");
    }

  }

  class ConstraintDataCellRenderer extends JLabel
      implements TableCellRenderer {

    public Component getTableCellRendererComponent(JTable table,
        Object value, boolean isSelected, boolean hasFocus,
        int row, int column) {
      Object cellText = getStringFromValue(column, value);
      if (cellText != null) value = cellText;
      if (value instanceof Number) {
        setHorizontalAlignment(RIGHT);
      }
      else {
        setHorizontalAlignment(CENTER);
      }
      setText(value.toString());
      return this;
    }

  }

  class ComboBoxCellEditor extends DefaultCellEditor {

    protected Object[][] editorValues;

    public ComboBoxCellEditor() {
      super(new JComboBox());
      JComboBox box = (JComboBox)(getComponent());
      box.setEditor(new NumericComboBoxEditor());
    }

    public Component getTableCellEditorComponent(JTable table,
        Object value, boolean isSelected,
        int row, int column) {
      JComboBox box = (JComboBox)(getComponent());
      Object selection;
      switch (column) {
        case GRIDX:
        case GRIDY:
          box.setEditable(true);
          break;
        case GRIDWIDTH:
        case GRIDHEIGHT:
          box.setEditable(true);
          break;
        case FILL:
          box.setEditable(false);
          break;
        case ANCHOR:
          box.setEditable(false);
          break;
      }
      editorValues = getValueArray(column);
      DefaultComboBoxModel dcbm = new DefaultComboBoxModel(
          editorValues[STRING_VALUE]);
      box.setModel(dcbm);
      Object boxValue = getStringFromValue(column, value);
      if (boxValue != null) {
        box.setSelectedItem(getStringFromValue(column,
            value));
      }
      else {
        ComboBoxEditor editor = box.getEditor();
        editor.setItem(value);
      }
      return box;
    }

    public Object getCellEditorValue() {
      Object value = null;
      JComboBox box = (JComboBox)(getComponent());
      int index = box.getSelectedIndex();
      if (index != -1) {
        return editorValues[0][index];
      }
      else {
        value = new Integer(
          box.getSelectedItem().toString());
      }
      return value;
    }

  }

  class NumericComboBoxEditor extends NumericTextField
      implements ComboBoxEditor {

    public NumericComboBoxEditor() {
      super(5, false);
    }

    public Component getEditorComponent() {
      return this;
    }

    public Object getItem() {
      return getText();
    }

    public void setItem(Object item) {
      if (item != null)
      setText(item.toString());
    }

  }

  protected Object getStringFromValue(int column, Object value) {
    Object result = null;
    Object[][] values = getValueArray(column);
    if (values != null) {
      for (int i = 0; i < values[NUMERIC_VALUE].length; i++) {
        if (values[NUMERIC_VALUE][i].equals(value)) {
          result = values[STRING_VALUE][i];
          break;
        }
      }
    }
    return result;
  }

  protected Object getValueFromString(int column, String value) {
    Object result = null;
    Object[][] values = getValueArray(column);
    for (int i = 0; i < values[STRING_VALUE].length; i++) {
      if (value.equals(values[STRING_VALUE][i])) {
        result = values[NUMERIC_VALUE][i];
        break;
      }
    }
    return result;
  }

  protected Object[][] getValueArray(int column) {
    Object[][] result = null;
    switch (column) {
      case FILL:
        result = FILL_VALUES;
        break;
      case ANCHOR:
        result = ANCHOR_VALUES;
        break;
      case GRIDX:
      case GRIDY:
        result = POSITION_VALUES;
        break;
      case GRIDWIDTH:
      case GRIDHEIGHT:
        result = SIZE_VALUES;
        break;
    }
    return result;
  }

  public void refreshAllTables() {
    container.invalidate();
    container.validate();
    container.repaint();
    columnPanel.refreshTable();
    rowPanel.refreshTable();
    componentPanel.refreshTable();
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -