I need help with this Java gui assignment Create a JFrame. Create 5 JPanels (The
ID: 3791195 • Letter: I
Question
I need help with this Java gui assignment
Create a JFrame.
Create 5 JPanels (The center 1 will draw circles, the rest will have a button each).
4 of the exterior JPanel should have 1 JLabel specifying its region.
The same 4 JPanels should have at least 1 working JButton.
When the button is clicked, make the JColorChooser Dialog show up.
Use the selected color to set the Background of the JPanel the button is in.
Make the center JPanel draw circles in response to MousePressed.
Make the center JPanel draw at least 1 other shape in response to MousePressed.
Explanation / Answer
A) Create a JFrame using java
Package palns;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ColorDisplay {
private final int X = 70;
private final int Y = 70;
private final Dimension PANEL_SIZE = new Dimension(500,500);
private JTextField textRed;
private JTextField textGreen;
private JTextField textBlue;
private JLabel labelText, labelRed, labelGreen, labelBlue;
private JPanel displayPanel;
private JPanel textPanel;
private JPanel buttonPanel;
private JButton button;
private final Font font = new Font("Arial", Font.PLAIN, 20);
public static void main(String[] args) {
// TODO Auto-generated method stub
new ColorDisplay();
}
public ColorDisplay(){
JFrame mainFrame = new JFrame();
// make sure the program exits when the frame close
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setTitle("Color Display");
mainFrame.setLocation(X,Y);
mainFrame.setPreferredSize(PANEL_SIZE);
// ensure an elastic layout
mainFrame.setLayout(new GridLayout(51));
mainFrame.setLocationByPlatform(true);
mainFrame.add(getColorPanel());
mainFrame.add(getTextPanel());
mainFrame.add(getButtonPanel());
mainFrame.pack();
mainFrame.setVisible(true);
}
public JPanel getColorPanel(){
displayPanel = new JPanel(new BorderLayout());
labelText = new JLabel("Color Display", JLabel.CENTER);
Font fontColorDisplay = new Font("Arial", Font.PLAIN, 38);
labelText.setFont(fontColorDisplay);
displayPanel.add(labelText);
return displayPanel;
}
public JPanel getTextPanel(){
textPanel = new JPanel(new GridLayout(2,3));
labelRed = new JLabel("Red", JLabel.CENTER);
labelGreen = new JLabel("Green", JLabel.CENTER);
labelBlue = new JLabel("Blue", JLabel.CENTER);
textRed = new JTextField();
textGreen = new JTextField();
textBlue = new JTextField();
labelRed.setFont(font);
labelGreen.setFont(font);
labelBlue.setFont(font);
textRed.setFont(font);
textGreen.setFont(font);
textBlue.setFont(font)
textPanel.add(labelRed);
textPanel.add(labelGreen);
textPanel.add(labelBlue);
textPanel.add(textRed);
textPanel.add(textGreen);
textPanel.add(textBlue);
return textPanel;
}
public JPanel getButtonPanel(){
buttonPanel = new JPanel(new BorderLayout());
button = new JButton("Display Color");
button.addActionListener(new ButtonListener ());
button.setFont(font);
button.setPreferredSize(new Dimension(100, 100));
buttonPanel.add(button);
return buttonPanel;
}
private int getColor(){
String colorCode = textRed.getText() + textGreen.getText() + textBlue.getText();
return Integer.parseInt(colorCode);
}
private boolean validateColor(String textValue){
boolean isValid = false;
try {
int num1 = Integer.parseInt(textValue);
if (num1 >= 0 && num1 <= 255)
isValid = true;
else
{
isValid = false;
JOptionPane.showConfirmDialog(null, "Please enter numbers between 0 and 255", "Error", JOptionPane.PLAIN_MESSAGE);
}
} catch (NumberFormatException e) {
JOptionPane.showConfirmDialog(null, "Please enter numerical values", "Error", JOptionPane.PLAIN_MESSAGE);
}
return is valid;
}
private class ButtonListener implements ActionListener {
public void actionPerformed {
if (validateColor(textRed.getText()) && validateColor(textGreen.getText()) && validateColor(textBlue.getText()))
{
Color bgColor = new Color(getColor());
displayPanel.setBackground(bgColor);
}
}
}
}