college/ss2010/gdi2/java/libs/acm/demo/SimpleTableDemo.java
2013-12-19 19:05:28 +01:00

98 lines
2.7 KiB
Java

/*
* File: SimpleTableDemo.java
* --------------------------
* This program expands the SimpleTableExample code to
* allow the user to change the number of columns and to
* add new buttons.
*/
import acm.gui.*;
import acm.program.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* This class arranges six buttons in a table.
*/
public class SimpleTableDemo extends Program implements ActionListener {
/** Set the program dimensions */
public static final int APPLICATION_WIDTH = 300;
public static final int APPLICATION_HEIGHT = 200;
/** Initialize the display */
public void init() {
setLayout(new TableLayout(0, 3));
layoutManager = (TableLayout) getLayout();
columnField = new IntField(3, 1, 6);
columnField.addActionListener(this);
addButton = new JButton("Add");
addButton.addActionListener(this);
add(addButton, SOUTH);
deleteButton = new JButton("Delete");
deleteButton.addActionListener(this);
deleteButton.setEnabled(false);
add(deleteButton, SOUTH);
add(new JLabel(" Columns:"), SOUTH);
add(columnField, SOUTH);
for (int i = 0; i < 6; i++) {
addButton();
}
}
/** Action listener */
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == columnField) {
layoutManager.setColumnCount(columnField.getValue());
validate();
} else if (source == addButton) {
addButton();
layoutManager.setColumnCount(columnField.getValue());
validate();
} else if (source == deleteButton) {
remove(selectedButton);
selectedButton = null;
deleteButton.setEnabled(false);
layoutManager.setColumnCount(columnField.getValue());
validate();
} else {
if (selectedButton != null) {
selectedButton.setBackground(oldBackground);
}
selectedButton = (JButton) source;
oldBackground = new Color(selectedButton.getBackground().getRGB());
selectedButton.setBackground(SELECTED_BACKGROUND_COLOR);
deleteButton.setEnabled(true);
}
}
/* Add the next button to the layout */
private void addButton() {
JButton button = new JButton("" + (char) ('A' + nextButtonIndex % 26));
button.addActionListener(this);
add(button);
nextButtonIndex++;
}
/* Color to use for selected button */
private static final Color SELECTED_BACKGROUND_COLOR = new Color(0xFF99FF);
/* Private instance variables */
private TableLayout layoutManager;
private JButton addButton;
private JButton deleteButton;
private JButton selectedButton;
private Color oldBackground;
private IntField columnField;
private int nextButtonIndex;
/* Standard Java entry point */
/* This method can be eliminated in most Java environments */
public static void main(String[] args) {
new SimpleTableDemo().start(args);
}
}