Avatar billede tendal Nybegynder
10. november 2004 - 14:25 Der er 16 kommentarer og
1 løsning

Knapper "over" billede

Hej
Jeg vil gerne lave nogle knapper som er gennemsigtige sådan, at jeg kan ligge dem over et billede sådan at når man trykker et bestemt sted på dette billede sker der et mens hvis man trykker et andet sted sker der noget andet. Har forsøgt med jbutton.setOpaque(true), men denne metode er afhængig af look and feel, og virker ikke i dette tilfælde. Hvad kan man gøre for at lave noget tilsvarende - eller kan jeg evt. ændre i et eller andet sådan at setOpaque metoden virker?
Avatar billede kalp Novice
10. november 2004 - 14:29 #1
ikke noget jeg har leget med, men hvad sker der hvis du laver din knap visible false?
Avatar billede tendal Nybegynder
10. november 2004 - 14:32 #2
Så bliver den vel bare ikke vist - og så kan man jo ikke trykke på den
Avatar billede kalp Novice
10. november 2004 - 14:35 #3
behøver man så overhovedet bruge en knap til formålet?
hvis du kender størrelsen på billedet kan du vel lave en mouseevent som vurdere hvor på billedet den bliver klikket (et område) og udfører en handling ud fra det?
Avatar billede kalp Novice
10. november 2004 - 14:38 #4
hvis du har målene på dit billede kan du lave en 2d array.. eller arraylist
som gemme på nogen kordinator.. inden for nogen områder... så lav en onmouseclick event eller hvad den hedder.. .når den bliver klikket læser den kordinatorne og udfører den handling som passer herefter
Avatar billede tendal Nybegynder
10. november 2004 - 14:44 #5
Nej det gør man sikkert ikke men det var jo også det jeg ledte efter altså en metode jeg kunne bruge - har du ikke et kode eksempel på det med mouseevent og koordinater - behøver ikke være over et billede
Avatar billede kalp Novice
10. november 2004 - 14:55 #6
jo tror jeg faktisk jeg har ...to sek
Avatar billede kalp Novice
10. november 2004 - 14:57 #7
import javax.swing.*;

public class Dots
{
 
  public static void main (String[] args)
  {
      JFrame dotsFrame = new JFrame ("Dots");
      dotsFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

      dotsFrame.getContentPane().add (new DotsPanel());

      dotsFrame.pack();
      dotsFrame.show();
  }
}



*****************
næste klasse
*****************

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class DotsPanel extends JPanel
{
  private final int WIDTH = 300, HEIGHT = 200;
  private final int RADIUS = 6;

  private ArrayList pointList;
  private int count;


  public DotsPanel()
  {
      pointList = new ArrayList();
      count = 0;

      addMouseListener (new DotsListener());

      setBackground (Color.black);
      setPreferredSize (new Dimension(WIDTH, HEIGHT));
  }

 
  public void paintComponent (Graphics page)
  {
      super.paintComponent(page);

      page.setColor (Color.green);

      // Retrieve an iterator for the ArrayList of points
      Iterator pointIterator = pointList.iterator();

      while (pointIterator.hasNext())
      {
        Point drawPoint = (Point) pointIterator.next();
        page.fillOval (drawPoint.x - RADIUS, drawPoint.y - RADIUS,
                        RADIUS * 2, RADIUS * 2);
      }

      page.drawString ("Count: " + count, 5, 15);
  }

 
  private class DotsListener implements MouseListener
  {
     
      public void mousePressed (MouseEvent event)
      {
        pointList.add (event.getPoint());
        count++;
        repaint();
      }

      public void mouseClicked (MouseEvent event) {}
      public void mouseReleased (MouseEvent event) {}
      public void mouseEntered (MouseEvent event) {}
      public void mouseExited (MouseEvent event) {}
  }
}
Avatar billede kalp Novice
10. november 2004 - 14:58 #8
det selve ideen jeg tilbyder: ) programmet er grimt hehe... men smutter nu er tilbage i aften.. håber det hjælper!
Avatar billede tendal Nybegynder
10. november 2004 - 15:23 #9
Hvis andre har et lidt mere enkelt og overskueligt kode eksempel hvor det at trykke med musen et bestemt sted giver en eller anden handling er de stadig meget velkomne
Avatar billede tendal Nybegynder
10. november 2004 - 17:01 #10
Hej Kalp - det er jo rigtigt det du skriver, men en anelse indviklet eksempel kun det nederste er relevant - jeg fik det dog til at virke - så du skal have nogle point. Skal bare lige bruge et svar.
Avatar billede kalp Novice
10. november 2004 - 21:00 #11
Tendal: ) så vent med at give mig point til en eller anden kommer med resten af dit svar: ) så kan de deles:)
Avatar billede kalp Novice
11. november 2004 - 10:55 #12
og tænkte på et evt andet forslag... har ikke prøvet.. men i delphi kan man godt klikke på et label... så hvis du lægger tomme labels over dit billede og kan lave en event på det så er det vel fint nok også..

hvis man kan
Avatar billede tendal Nybegynder
11. november 2004 - 17:40 #13
Nej nej - jeg har fået svar - det var jo ikke så svært som jeg troede, så du fortjener pointene
Avatar billede tendal Nybegynder
11. november 2004 - 17:46 #14
Men selvfølgelig hvis du vil hjælpe lid yderligere så er mit næste spørgsmål - når jeg nu har følgende
public void mouseClicked (MouseEvent event)
        {
            Point p = event.getPoint();
            double x = p.getX();
            double y = p.getY();
            // pool bord
            if ( x<185 && x>120 && y>255 && y<340 )
            {
                changePic();
            }
            System.out.println(p);
        }
Så er problemet jo at hvis man ændre på skærmstørrelsen så passer koordinaterne jo ikke nødvendigvis længere - hvordan kan jeg komme omkring dette problem?
Avatar billede kalp Novice
11. november 2004 - 19:34 #15
hmm... har jeg ikke tænkt over faktisk.. giv mig til i morgen så skal jeg se om jeg kan finde ud af noget...

men tænkte dog lidt på noget.. hvis dit billede har nogen fastlagte mål fra start af burde det ville ikke have nogen indflydelse hvilken skærmopløsning man har? har du testet?
Avatar billede tendal Nybegynder
11. november 2004 - 20:27 #16
Jeg tror måske det har noget med mit layout at gøre - har i denne lille applikation brugt Borderlayout og det gør jo at tingene flytter sig hvis man resizer, så det kan være problemet løser sig hvis jeg vælger et andet layout - men jeg tænket at det måtte være en eller anden smart måde at løse problemet på.
Avatar billede kalp Novice
11. november 2004 - 20:30 #17
jeg vil prøve at se hvad jeg kan komme frem til i morgen... kan evt være man kan bruge import java.awt.Dimension; til noget...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester