/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