Lab 12 partial lab file

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;

public class gui extends JFrame {
// Declare check boxes
private JCheckBox jchkCentered, jchkBold, jchkItalic;

// Declare a combo box to hold font names

// Declare a combo box to hold font sizes

// Font name
private String fontName = "SansSerif";

// Font style
private int fontStyle = Font.PLAIN;

// Font Size
private int fontSize = 12;

// Declare a panel for displaying message
private MessagePanel messagePanel
= new MessagePanel("Java is Cool");

/** Main method */
public static void main(String[] args) {
gui frame = new gui();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null); // Center the frame
frame.setVisible(true);
}

/** Default constructor */
public gui() {
setTitle("Message Center");

// Set the background color of messagePanel
messagePanel.setBackground(Color.yellow);

// Find all available font names
GraphicsEnvironment e =
GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontnames = e.getAvailableFontFamilyNames();
//Add fonts to the combo box

 

// Add font sizes to the combo box

 

 

//Design the gui layout using Panel containers

 

// Register listeners on the combo box with an event class
jcboFontName.addItemListener(new Listener());

// Register listeners on jchkCentered, jchkBold, and jchkItalic
jchkCentered.addItemListener(new Listener());

}

//Create the class Listener that implements ItemListener

class Listener implements ItemListener {
/** Handle check box selection */
public void itemStateChanged(ItemEvent e)
{
if (e.getSource() == jcboFontName) {
fontName = (String)(jcboFontName.getSelectedItem());

// Set font for the message
messagePanel.setFont(new Font(fontName, fontStyle, fontSize));

}
else if (e.getSource() == jcboFontSize) {


// Set font for the message (Font.ITALIC, Font.BOLD, or FONT.PLAIN)
messagePanel.setFont(new Font(fontName, fontStyle, fontSize));

}


// Determine a font style

fontStyle = fontStyle + Font.ITALIC;

// Set font for the message
messagePanel.setFont(new Font(fontName, fontStyle, fontSize));
}

//Determine the center


}
}
}
}

_____________________________

// MessagePanel.java: Display a message on a JPanel
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;

public class MessagePanel extends JPanel {
/** The message to be displayed */
private String message = "Welcome to Java";

/** The x coordinate where the message is displayed */
private int xCoordinate = 20;

/** The y coordinate where the message is displayed */
private int yCoordinate = 20;

/** Indicate whether the message is displayed in the center */
private boolean centered;

/** The interval for moving the message horizontally and vertically */
private int interval = 10;

/** Default constructor */
public MessagePanel() {
}

/** Constructor with a message parameter */
public MessagePanel(String message) {
this.message = message;
}

/** Return message */
public String getMessage() {
return message;
}

/** Set a new message */
public void setMessage(String message) {
this.message = message;
repaint();
}

/** Return xCoordinator */
public int getXCoordinate() {
return xCoordinate;
}

/** Set a new xCoordinator */
public void setXCoordinate(int x) {
this.xCoordinate = x;
repaint();
}

/** Return yCoordinator */
public int getYCoordinate() {
return yCoordinate;
}

/** Set a new yCoordinator */
public void setYCoordinate(int y) {
this.yCoordinate = y;
repaint();
}

/** Return centered */
public boolean isCentered() {
return centered;
}

/** Set a new centered */
public void setCentered(boolean centered) {
this.centered = centered;
repaint();
}

/** Return interval */
public int getInterval() {
return interval;
}

/** Set a new interval */
public void setInterval(int interval) {
this.interval = interval;
repaint();
}

/** Paint the message */
protected void paintComponent(Graphics g) {
super.paintComponent(g);

if (centered) {
// Get font metrics for the current font
FontMetrics fm = g.getFontMetrics();

// Find the center location to display
int stringWidth = fm.stringWidth(message);
int stringAscent = fm.getAscent();
// Get the position of the leftmost character in the baseline
xCoordinate = getWidth() / 2 - stringWidth / 2;
yCoordinate = getHeight() / 2 + stringAscent / 2;
}

g.drawString(message, xCoordinate, yCoordinate);
}

/** Move the message left */
public void moveLeft() {
xCoordinate -= interval;
repaint();
}

/** Move the message right */
public void moveRight() {
xCoordinate += interval;
repaint();
}

/** Move the message up */
public void moveUp() {
yCoordinate -= interval;
repaint();
}

/** Move the message down */
public void moveDown() {
yCoordinate -= interval;
repaint();
}

/** Override get method for preferredSize */
public Dimension getPreferredSize() {
return new Dimension(200, 30);
}
}