/home/wpollock1/public_html/Java/Personality.java

// Scientific Personality Quiz - Development Version
// This program demonstrates the use of Buttons and Labels, and Panels
// and LayoutManagers (BorderLayout and FlowLayout).
//
// (C)2020 by Wayne Pollock, Tampa FL USA.  All Rights Reserved.

import java.awt.*;
import java.awt.event.*;

public class Personality extends Frame implements ActionListener {
    Button sunRiseBtn, sunSetBtn;
    Label answerLine1, answerLine2, title, credits, question;
    String sunRiseLine1, sunSetLine1, sunRiseLine2, sunSetLine2;

public static void main (String[] args) {
    new Personality();  // Create and display the Frame
}

public Personality () {
    // Set up the window:
    setTitle( "Scientific Personality Quiz" );
    setSize(465, 250);
    setLocationRelativeTo(null);  // Center frame on screen
    setBackground(Color.CYAN);
    addWindowListener( new WindowAdapter() {
        public void windowClosing( WindowEvent e ) {
            System.exit( 0 );
        }
      }
    );
    setLayout( new BorderLayout() );

    // Create components and adjust their properties:
    Font myFont = new Font( "Seriff", Font.BOLD, 18 );

    title = new Label( "Scientific Personality Quiz", Label.CENTER );
    title.setFont( new Font("SanSeriff", Font.BOLD, 30) );

    question = new Label( "Which do you prefer to watch?", Label.CENTER );
    question.setFont( myFont );

    credits = new Label( "\u00A9 2020 by Wayne Pollock, Tampa"
                      + " FL USA.  All Rights Reserved.", Label.CENTER );
    credits.setFont( new Font("SanSeriff", Font.PLAIN, 12) );

    answerLine1 = new Label( "If you see this line", Label.CENTER );
    answerLine1.setFont( myFont );
    answerLine1.setBackground( Color.RED );
    answerLine1.setForeground( Color.BLACK );
    answerLine1.setVisible( false );  //Don't show answer till user clicks a btn.

    answerLine2 = new Label( "then this program has a bug!", Label.CENTER );
    answerLine2.setFont( myFont );
    answerLine2.setBackground( Color.RED );
    answerLine2.setForeground( Color.BLACK );
    answerLine2.setVisible( false );  //Don't show answer till user clicks a btn.

    sunRiseBtn = new Button( "Sun Rise" );
    sunSetBtn  = new Button( "Sun Set" );

    // Lines one and two for the Labels for a sun rise:
    sunRiseLine1 = "You are getting up too early!";
    sunRiseLine2 = "You are in need of immediate psychotherapy.";

    // Lines one and two for the Labels for a sun set:
    sunSetLine1  = "Why are you watching the sun set when";
    sunSetLine2  = "you should be working?  You are a lazy person!";

    // Layout components (note indenting to show Components within Panels):
    setLayout( new BorderLayout() );
    setBackground( Color.CYAN );  // Same as background set in HTML file.
    Panel top = new Panel();
     top.setLayout( new BorderLayout() );
     top.add( title, "North" );
     top.add( question, "South" );
    add( top, "North" );

    Panel mid = new Panel();
     mid.setLayout( new BorderLayout() );
     Panel btns = new Panel();
       btns.add( sunRiseBtn );
       btns.add( new Label( "    " ) );  // Just a spacer.
       btns.add( sunSetBtn );
     mid.add( btns, "North" );
     mid.add( new Label( " " ), "Center" ); // Another spacer.
     Panel answerP = new Panel();
       answerP.setLayout( new BorderLayout() );
       answerP.add( answerLine1, "North" );
       answerP.add( answerLine2, "South" );
     mid.add( answerP, "South");
    add( mid, "Center" );

    Panel bot = new Panel();
     bot.setLayout( new BorderLayout() );
     bot.add( new Label( " " ), "North" );
     bot.add( credits, "South" );
    add( bot, "South" );

    // Set up event handling for the two buttons:
    sunRiseBtn.addActionListener( this );
    sunSetBtn.addActionListener( this );
    setVisible(true);
}

public void actionPerformed ( ActionEvent ae ) {
   if ( ae.getActionCommand().equals("Sun Rise") ) {
      answerLine1.setText( sunRiseLine1 );
      answerLine2.setText( sunRiseLine2 );
   } else {  // Must be "Sun Set":
      answerLine1.setText( sunSetLine1 );
      answerLine2.setText( sunSetLine2 );
   }
   answerLine1.setVisible( true );
   answerLine2.setVisible( true );

   validate();  // Forces Java to re-layout (and repaint) the Frame.
}

}  // End