-
package ftw;
-
import
-
java.awt.*;
-
import
-
java.awt.event.*;
-
import
-
java.io.*;
-
import
-
javax.imageio.*;
-
import
-
javax.swing.*;
-
-
//public class ImageTest {
-
public class ftw2 {
-
public static void main(String[] args) {
-
ImageFrame frame = new ImageFrame();
-
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
frame.setVisible(true);
-
}
-
}
-
-
-
-
-
-
-
-
-
class QueryExit extends JPanel {
-
//To be implemented later... I'm going to create a custom dialog that displays one of
-
//the exit catch-phrases that Wolfenstein 3D uses. Here they are. I'm extending JPanel
-
//because I don't like JDialog it is cranky.
-
/*
-
{"Dost thou wish to\nleave with such hasty\nabandon?"},
-
{"Chickening out...\nalready?"},
-
{"Press N for more carnage.\nPress Y to be a weenie."},
-
{"So, you think you can\nquit this easily, huh?"},
-
{"Press N to save the world.\nPress Y to abandon it in\nits hour of need."},
-
{"Press N if you are brave.\nPress Y to cower in shame."},
-
{"Heroes, press N.\nWimps, press Y."},
-
{"You are at an intersection.\nA sign says, 'Press Y to quit.'\n>"},
-
{"For guns and glory, press N.\nFor work and worry, press Y."}
-
*/
-
}
-
/**
-
A frame with an image panel
-
*/
-
class ImageFrame extends JFrame /*implements MouseListener*/ {
-
public ImageFrame() {
-
//setUndecorated(true);
-
//set panel size
-
// get the GraphicsDevice
-
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
-
GraphicsDevice device = environment.getDefaultScreenDevice();
-
//device.
-
//setFullScreenWindow(this);
-
setSize(800,600);
-
// add panel to frame
-
ImagePanel panel = new ImagePanel();
-
add(panel);
-
/* I realized that the following code was made obsolete by the setFullScreenWindow method
-
//Get size of screen
-
Toolkit kit = Toolkit.getDefaultToolkit();
-
Dimension screenSize = kit.getScreenSize();
-
int screenWidth = screenSize.width;
-
int screenHeight = screenSize.height;
-
//setSize(screenWidth, screenHeight);
-
*/
-
}
-
public void setUndecorated(boolean b) {
-
super.setUndecorated(b);
-
}
-
//this was going to be used to enable the user to resize the window and to move it
-
//around as java handles all that for the programmer when the window is decorated.
-
//Unfortunately, I ran into some scope issues, so it isn't used for now.
-
//To implement it, I would code it so that when the user hit a button, such as esc,
-
//the window would change to either decorated or undecorated.
-
//The game would pause when the window is decorated.
-
//So if the user wanted to decorate the window so he could move it around,
-
//setUndecorated(true) would be called. And if he wanted to start playing again,
-
//setUndecorated(false) would be called.
-
}
-
//end class ImageFrame
-
-
/**
-
A panel that displays an image, draws a grid for every increment of 50 in the x and y axes,
-
and implements tooltips for the mouse so that the user can see where he is in the panel
-
*/
-
class ImagePanel extends JPanel implements MouseMotionListener {
-
-
private Image image;
-
private Point tipPoint = null;
-
private Label tipLabel = new TipLabel();
-
private SelectionListener selectionListener;
-
public Polygon hex = new Polygon();
-
Hexagon hex_temp2 = new Hexagon(1, 1, 1,1);
-
-
public ImagePanel() {
-
hex.addPoint(31,0);
-
hex.addPoint(0,19);
-
hex.addPoint(0,55);
-
hex.addPoint(31,73);
-
hex.addPoint(63,55);
-
hex.addPoint(63,19);
-
//Hexagon hex = new Hexagon(1,1,10,10);
-
-
// get the image
-
try {
-
image = ImageIO.read(new File("C:/Users/Jon/Pictures/konq_back.jpg"));
-
}
-
catch (IOException e) {
-
e.printStackTrace();
-
}
-
this.add(tipLabel);
-
tipLabel.setVisible(false);
-
//mouseClicked is not called if the mouse moves between the mouse button being pressed
-
//and released. Hence the the press and release separately are handled separately.
-
-
this.addMouseListener(new MouseAdapter() {
-
public void mousePressed(MouseEvent e) {
-
mouseClick(e, true);
-
}
-
public void mouseReleased(MouseEvent e) {
-
mouseClick(e, false);
-
}
-
});
-
// Track mouse motion for tooltips
-
this.addMouseMotionListener(new MouseMotionAdapter() {
-
public void mouseMoved(MouseEvent e) {
-
ImagePanel.this.mouseMoved(e);
-
}
-
});
-
-
-
}
-
//end constructor
-
/** Register a selectionListener.
-
*
-
* For simplicity, only one listener at a time is supported.
-
*
-
* See end of file for the SelectionListener interface
-
*/
-
public void setSelectionListener(SelectionListener s) {
-
selectionListener = s;
-
}
-
private Point clickedPoint = null;
-
/** Respond to a mouse click by selecting the point... This isn't a good way of
-
* articulating what I'm thinking; but after running the program a few times
-
* you'll see why it works.
-
*
-
* ATTENTION!!!! PARTS OF THIS METHOD MIGHT BE CAUSING THE FLICKER PROBLEMS
-
* THAT ARE HAPPENING!!!
-
* */
-
public void mouseClick(MouseEvent e, boolean down) {
-
Point pt = e.getPoint();
-
if (down) {
-
// The mouse button has gone down: record where we are
-
clickedPoint = pt;
-
if (hex_temp2.contains(pt)) {
-
System.out.println("Clicked in region of hexagon");
-
} else {
-
System.out.println("did not click in region");
-
}
-
}
-
else {
-
// The mouse button has gone up: perform the action if we are still over
-
// the same town
-
if (selectionListener != null && pt != null && pt == clickedPoint)
-
selectionListener.select(pt);
-
clickedPoint = null;
-
}
-
}
-
public Image getImage() {
-
return image;
-
}
-
// Track mouse movement in order to show tooltips
-
public void mouseMoved(MouseEvent e) {
-
Point z = e.getPoint();
-
tipPoint = z;
-
tipLabel.setText(z.toString());
-
tipLabel.setSize(tipLabel.getPreferredSize());
-
tipLabel.setLocation(z.x+8, z.y+8);
-
tipLabel.setVisible(true);
-
//I originally thought that I would need the original lines of code, but they
-
//cause lots of problems. SO DO NOT THINK THAT IMPLEMENTING THEM WILL
-
//IMPROVE ANYTHING
-
/*
-
//repaint();
-
if (tipPoint != null) {
-
//Tool tip showing: remove if not at that point anymore
-
tipPoint = null;
-
tipLabel.setVisible(false);
-
return;
-
}*/
-
}
-
public void paintComponent(Graphics g) {
-
super.paintComponent(g);
-
-
Graphics2D g2 = (Graphics2D) g;
-
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
-
RenderingHints.VALUE_ANTIALIAS_ON);
-
-
if (image == null) return;
-
// draw the image in the upper-left corner
-
Toolkit kit = Toolkit.getDefaultToolkit();
-
Dimension screenSize = kit.getScreenSize();
-
int screenWidth = screenSize.width;
-
int screenHeight = screenSize.height;
-
-
g.drawImage(image, 0,0, null);
-
-
for(int y = 0; y < screenHeight; y+=50) {
-
g.drawLine(0, y, screenWidth, y);
-
}
-
-
-
for(int x = 0; x < screenWidth; x+= 50) {
-
g.drawLine(x, 0, x, screenHeight);
-
}
-
-
int hex_x[] = { 31 ,0 ,0 ,31 ,63, 63 };
-
int hex_y[] = { 0,19,55,73,55,19 };
-
g.setColor(Color.green);
-
-
-
//g.translate((800/2)-30,(600/2)-40);
-
//hex_temp2.move(800/2, 600/2);
-
g.fillPolygon(hex_temp2);
-
hex_temp2.move(800/2+30,600/2+30);
-
repaint();
-
-
Hexagon nhex = new Hexagon(1,1,1,1);
-
//g.clipRect(0, 0, 100, 100);
-
-
-
-
-
-
-
-
-
-
//g.drawRect(575, 500, 150, 85);
-
//displayToolTipText();
-
}
-
//end paintComponents
-
//Deprecated, but kept for ideas.
-
/*
-
public void displayToolTipText() {
-
Point currentcoords = new Point(600,600 /*e.getPoint());
-
//Toolkit kit = Toolkit.getDefaultToolkit();
-
(ToolTipManager.sharedInstance()).registerComponent(this);
-
JToolTip tooltip = this.createToolTip();
-
tooltip.setToolTipText(currentcoords.toString());
-
}*/
-
//implement the MouseMotionListener interface method mouseDragged
-
-
public void mouseDragged(MouseEvent e) {
-
//do nothing
-
}
-
}
-
-
//Interface for classes that can listen for clicks on point
-
interface SelectionListener {
-
void select(Point pt);
-
}
-
/**
-
Like a Label, but with a preferred size barely big
-
* enough for the text.
-
*/
-
class TipLabel extends Label {
-
Font tipFont = new Font("Segoe UI", Font.PLAIN, 10);
-
public TipLabel() {
-
setBackground(new Color(255, 255, 255));
-
setFont(tipFont);
-
}
-
/** Calculate the mimimum size */
-
public Dimension getMinimumSize() {
-
FontMetrics fm = getFontMetrics(tipFont);
-
String label = getText();
-
if (label == null) label = ""; // Add 4 pixels to the width for safety
-
return new Dimension(fm.stringWidth(label)+20, fm.getHeight());
-
}
-
/** Calculate the preferred size. */
-
public Dimension getPreferredSize() {
-
return getMinimumSize();
-
}
-
}
-
-
-
-
Posted by main class Wed 7th Mar 2007 22:58 - Syntax is None/text - 171 views
Download | New Post | Modify | Hide line numbers
Download | New Post | Modify | Hide line numbers
Description:
This is an adaptation of your source code - the grid and coordinates really
help
This is an adaptation of your source code - the grid and coordinates really
help
PermaLink to this entry https://pastebin.co.uk/11541
Posted by main class Wed 7th Mar 2007 22:58 - Syntax is None/text - 171 views
Download | New Post | Modify | Hide line numbers
Download | New Post | Modify | Hide line numbers
Comments: 0