/** * A Simple stand-alone GUI program based on Swing. * * This example uses a class that extends JFrame * instead of creating a JFrame object! * * Similar to ButtonText sample, but this one * puts the text field at top and not in BorderLayout.CENTER * so that it's size is preserved. * * This class also implements ActionListener, so we * can use it to handle Action events * * The main creates a window with a bunch of buttons * and a textfield. * Uses a JPanel to hold the buttons (container component). * * Whenever the user presses a button the button text is appended to * the textfield * * @author Dave Hollinger * @version 1.0 */ import javax.swing.*; import java.awt.*; // needed for Container import java.awt.event.*; // needed for event types (listeners) class ButtonText2 extends JFrame implements ActionListener { // The textfield must not be anonymouse, since we want to // be able to modify it from event handlers JTextField jt; public static void main(String [] args) { ButtonText2 bt = new ButtonText2(); } // Constructor sets up the window and gets things rolling. ButtonText2() { Container c = getContentPane(); // set up layout manager c.setLayout(new BorderLayout(10,10)); // add single text Area jt = new JTextField(); jt.setSize(100,20); jt.setFont(new Font("Arial",Font.BOLD,16)); jt.setBackground(Color.WHITE); jt.setForeground(Color.BLUE); c.add(jt,BorderLayout.NORTH); // add a button panel c.add( createButtonPanel(), BorderLayout.CENTER ); // establish what happens when the window is closed // (without this the program would keep running!) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // set the size setSize(200,200); // turn it on setVisible(true); } JPanel createButtonPanel() { // create a JPanel with a bunch of buttons in it arranged in // a grid. JPanel jp = new JPanel(); // establish the layout manager // 2 rows, 3 cols everything 5 pixels apart jp.setLayout( new GridLayout(2,3,5,5)); // add a bunch of buttons for (int i=0;i<6;i++) { JButton j = new JButton(new Integer(i).toString()); // change the font j.setFont(new Font("Courier",Font.BOLD,20)); // change the colors j.setBackground(Color.WHITE); j.setForeground(Color.BLACK); // set up the listener for this button // NOTE: We listen to ourself (we are an ActionListener!). j.addActionListener(this); // add the button to the panel jp.add(j); } return(jp); } // here is the method required as an ActionListener // (there is only one!) public void actionPerformed(ActionEvent e) { // find out what the action was // (for buttons, this is the button text by default) String act = e.getActionCommand(); jt.setText(jt.getText() + act ); } }