📄 gridbagtester.java
字号:
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 + -