fredrija Skrevet 20. april 2007 Del Skrevet 20. april 2007 hei. skal lage en meny i java, til et spill. dette skal være en vanlig meny med ett bilde i bakgrunnen og knapper oppå bilder. knappene er som følger: new game options highscore exit hvordan skal dette gjøres? jeg fikk bare bildet frem, så kom knappen under. og det kom bare en knapp. denne knappen plaserte seg midt i fram'en som jeg lagde. går det an å gi kordinater til JButtons, slik at man kan velge hvor i JFram'en de skal bevinne seg? og få de til å plassere seg oppå bildet og ikke under. Lenke til kommentar
krigun Skrevet 20. april 2007 Del Skrevet 20. april 2007 Siden det er fredag... Klikk for å se/fjerne innholdet nedenfor import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.util.ArrayList; import javax.swing.JFrame; @SuppressWarnings("serial") public class UITest extends JFrame implements UIListener { public static void main(String[]args) { new UITest(); } public UITest() { UICanvas c = new UICanvas(this); c.addButton(new UIButton("new_game", 100, 100, 100, 30, "New Game")); c.addButton(new UIButton("highscore", 100, 200, 100, 30, "Highscore")); this.getContentPane().add(c); this.setSize(640, 480); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void buttonClicked(String buttonName) { System.out.println(buttonName + " was clicked.."); } class UICanvas extends Canvas implements MouseListener, MouseMotionListener { private ArrayList<UIButton> buttons; private UIListener uiListener; public UICanvas(UIListener uiListener) { buttons = new ArrayList<UIButton>(); this.uiListener = uiListener; this.addMouseListener(this); this.addMouseMotionListener(this); } public void addButton(UIButton uiButton) { buttons.add(uiButton); } public void paint(Graphics g) { g.clearRect(0, 0, this.getWidth(), this.getHeight()); for(UIButton uiButton : buttons) { uiButton.paint((Graphics2D)g); } } public void mouseClicked(MouseEvent mouseEvent) { for(UIButton uiButton : buttons) { if(uiButton.isHit(mouseEvent.getX(), mouseEvent.getY())) { uiButton.setFill(new Color(0x0000FF)); uiListener.buttonClicked(uiButton.getName()); } } repaint(); } public void mouseEntered(MouseEvent mouseEvent) {} public void mouseExited(MouseEvent mouseEvent) {} public void mousePressed(MouseEvent mouseEvent) {} public void mouseReleased(MouseEvent mouseEvent) {} public void mouseDragged(MouseEvent mouseEvent) {} public void mouseMoved(MouseEvent mouseEvent) { for(UIButton uiButton : buttons) { if(uiButton.isHit(mouseEvent.getX(), mouseEvent.getY())) uiButton.setFill(new Color(0xFF0000)); else uiButton.setFill(new Color(0x000000)); } repaint(); } } class UIButton { private int x, y, width, height; private Rectangle bounds; private String text, name; private Color fill = new Color(0x000000); public UIButton(String name, int x, int y, int width, int height, String text) { this.x = x; this.y = y; this.width = width; this.height = height; this.text = text; this.name = name; bounds = new Rectangle(x, y, width, height); } public void paint(Graphics2D g) { g.setColor(fill); g.fillRect(x, y, width, height); g.setColor(new Color(0x00FF00)); g.drawString(text, x + 10, y + 20); } public boolean isHit(int x, int y) { return bounds.contains(x, y); } public String getName() { return name; } public void setFill(Color fill) { this.fill = fill; } } } og.. Klikk for å se/fjerne innholdet nedenfor public interface UIListener { public void buttonClicked(String buttonName); } Lenke til kommentar
fredrija Skrevet 20. april 2007 Forfatter Del Skrevet 20. april 2007 oi. tusen takk. det hjalp veldig mye Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå