98 lines
2.7 KiB
Java
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);
|
|
}
|
|
}
|