Replace autogenerated swing panel with custom title panel

This commit is contained in:
Victor 2013-06-27 22:24:44 +03:00
parent fb03d35727
commit f30db6374c

View File

@ -1,195 +1,181 @@
package jtictactoe;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author aNNiMON
*/
public class TitlePanel extends JPanel {
private boolean moveForm;
private BufferedImage exitImage, exitImageBW;
private BufferedImage minimizeImage, minimizeImageBW;
private BufferedImage background;
private Point clickedStart;
private final JFrame mainFrame;
private Font messageFont, infoFont;
private int winX, winO;
private String message;
public TitlePanel(JFrame mainFrame) {
this.mainFrame = mainFrame;
background = Util.getImage("/res/title_bg.jpg");
minimizeImage = Util.getImage("/res/minimize_button.png");
minimizeImageBW = Util.getImage("/res/minimize_button_bw.png");
exitImage = Util.getImage("/res/exit_button.png");
exitImageBW = Util.getImage("/res/exit_button_bw.png");
moveForm = false;
messageFont = new Font("Arial", Font.BOLD, 60);
infoFont = new Font("Arial", Font.PLAIN, 30);
winX = winO = 0;
message = "";
initComponents();
}
public void updateWin(int winX, int winO) {
this.winX += winX;
this.winO += winO;
}
public void setMessage(String message) {
this.message = message;
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
final int width = background.getWidth();
g.drawImage(background, 0, 0, null);
g.setColor(Color.DARK_GRAY);
g.setFont(infoFont);
g.drawString("X:"+winX, 5, 110);
String win = "O:" + winO;
g.drawString(win, width - getFontMetrics(infoFont).stringWidth(win) - 5, 110);
if (!message.isEmpty()) {
g.setFont(messageFont);
int x = getFontMetrics(messageFont).stringWidth(message) / 2;
x = width / 2 - x;
g.drawString(message, x, 110);
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
exitButton = new javax.swing.JButton();
minimizeButton = new javax.swing.JButton();
setBackground(new java.awt.Color(51, 51, 51));
setPreferredSize(new java.awt.Dimension(480, 150));
addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
formMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
formMouseReleased(evt);
}
});
addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
formMouseDragged(evt);
}
});
setLayout(null);
exitButton.setIcon(new javax.swing.ImageIcon(exitImageBW));
exitButton.setBorder(null);
exitButton.setBorderPainted(false);
exitButton.setContentAreaFilled(false);
exitButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
exitButtonMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
exitButtonMouseExited(evt);
}
});
exitButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitButtonActionPerformed(evt);
}
});
add(exitButton);
exitButton.setBounds(378, 2, 100, 50);
minimizeButton.setIcon(new javax.swing.ImageIcon(minimizeImageBW));
minimizeButton.setBorder(null);
minimizeButton.setBorderPainted(false);
minimizeButton.setContentAreaFilled(false);
minimizeButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
minimizeButtonMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
minimizeButtonMouseExited(evt);
}
});
minimizeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
minimizeButtonActionPerformed(evt);
}
});
add(minimizeButton);
minimizeButton.setBounds(2, 2, 100, 50);
}// </editor-fold>//GEN-END:initComponents
private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitButtonActionPerformed
mainFrame.setVisible(false);
mainFrame.dispose();
System.exit(0);
}//GEN-LAST:event_exitButtonActionPerformed
private void minimizeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_minimizeButtonActionPerformed
mainFrame.setState(Frame.ICONIFIED);
}//GEN-LAST:event_minimizeButtonActionPerformed
private void exitButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_exitButtonMouseEntered
exitButton.setIcon(new ImageIcon(exitImage));
}//GEN-LAST:event_exitButtonMouseEntered
private void exitButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_exitButtonMouseExited
exitButton.setIcon(new ImageIcon(exitImageBW));
}//GEN-LAST:event_exitButtonMouseExited
private void minimizeButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_minimizeButtonMouseEntered
minimizeButton.setIcon(new ImageIcon(minimizeImage));
}//GEN-LAST:event_minimizeButtonMouseEntered
private void minimizeButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_minimizeButtonMouseExited
minimizeButton.setIcon(new ImageIcon(minimizeImageBW));
}//GEN-LAST:event_minimizeButtonMouseExited
private void formMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMousePressed
if (evt.getButton() == MouseEvent.BUTTON1) {
moveForm = true;
clickedStart = evt.getPoint();
}
}//GEN-LAST:event_formMousePressed
private void formMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseReleased
moveForm = false;
}//GEN-LAST:event_formMouseReleased
private void formMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseDragged
if (moveForm) {
Point moved = evt.getLocationOnScreen();
moved.translate(-clickedStart.x, -clickedStart.y);
mainFrame.setLocation(moved);
}
}//GEN-LAST:event_formMouseDragged
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton exitButton;
private javax.swing.JButton minimizeButton;
// End of variables declaration//GEN-END:variables
}
package jtictactoe;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author aNNiMON
*/
public class TitlePanel extends JPanel {
private final BufferedImage exitImage, exitImageBW;
private final BufferedImage minimizeImage, minimizeImageBW;
private final BufferedImage background;
private final JFrame mainFrame;
private final Font messageFont, infoFont;
private boolean moveForm;
private Point clickedStart;
private int winX, winO;
private String message;
public TitlePanel(JFrame mainFrame) {
this.mainFrame = mainFrame;
background = Util.getImage("/res/title_bg.jpg");
minimizeImage = Util.getImage("/res/minimize_button.png");
minimizeImageBW = Util.getImage("/res/minimize_button_bw.png");
exitImage = Util.getImage("/res/exit_button.png");
exitImageBW = Util.getImage("/res/exit_button_bw.png");
moveForm = false;
messageFont = new Font("Arial", Font.BOLD, 60);
infoFont = new Font("Arial", Font.PLAIN, 30);
winX = winO = 0;
message = "";
initComponents();
}
public void updateWin(int winX, int winO) {
this.winX += winX;
this.winO += winO;
}
public void setMessage(String message) {
this.message = message;
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
final int width = background.getWidth();
g.drawImage(background, 0, 0, null);
g.setColor(Color.DARK_GRAY);
g.setFont(infoFont);
g.drawString("X:"+winX, 5, 110);
String win = "O:" + winO;
g.drawString(win, width - getFontMetrics(infoFont).stringWidth(win) - 5, 110);
if (!message.isEmpty()) {
g.setFont(messageFont);
int x = getFontMetrics(messageFont).stringWidth(message) / 2;
x = width / 2 - x;
g.drawString(message, x, 110);
}
}
private void initComponents() {
setBackground(new Color(51, 51, 51));
setPreferredSize(new Dimension(480, 150));
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent evt) {
formMousePressed(evt);
}
@Override
public void mouseReleased(MouseEvent evt) {
formMouseReleased(evt);
}
});
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent evt) {
formMouseDragged(evt);
}
});
setLayout(null);
final JButton exitButton = new JButton();
exitButton.setIcon(new ImageIcon(exitImageBW));
exitButton.setBorder(null);
exitButton.setBorderPainted(false);
exitButton.setContentAreaFilled(false);
exitButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent evt) {
exitButton.setIcon(new ImageIcon(exitImage));
}
@Override
public void mouseExited(MouseEvent evt) {
exitButton.setIcon(new ImageIcon(exitImageBW));
}
});
exitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
exitButtonActionPerformed(evt);
}
});
add(exitButton);
exitButton.setBounds(378, 2, 100, 50);
final JButton minimizeButton = new JButton();
minimizeButton.setIcon(new ImageIcon(minimizeImageBW));
minimizeButton.setBorder(null);
minimizeButton.setBorderPainted(false);
minimizeButton.setContentAreaFilled(false);
minimizeButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent evt) {
minimizeButton.setIcon(new ImageIcon(minimizeImage));
}
@Override
public void mouseExited(MouseEvent evt) {
minimizeButton.setIcon(new ImageIcon(minimizeImageBW));
}
});
minimizeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
mainFrame.setState(Frame.ICONIFIED);
}
});
add(minimizeButton);
minimizeButton.setBounds(2, 2, 100, 50);
}
private void exitButtonActionPerformed(ActionEvent evt) {
mainFrame.setVisible(false);
mainFrame.dispose();
System.exit(0);
}
private void formMousePressed(MouseEvent evt) {
if (evt.getButton() == MouseEvent.BUTTON1) {
moveForm = true;
clickedStart = evt.getPoint();
}
}
private void formMouseReleased(MouseEvent evt) {
moveForm = false;
}
private void formMouseDragged(MouseEvent evt) {
if (moveForm) {
Point moved = evt.getLocationOnScreen();
moved.translate(-clickedStart.x, -clickedStart.y);
mainFrame.setLocation(moved);
}
}
}