applet + scrolling

applet + scrolling - Java - Programmation

Marsh Posté le 26-03-2004 à 13:25:55    

Salut à tous,
 
Alors voilà, je suis novice en java, et j'ai un petit soucis à soumettre :
 
Je suis en train de créer un petit jeu en java (pour mon propre plaisir  :ouch: ). C'est une sorte de wargame où j'affiche dans une applet des cases de coordonnées x, y.  
 
Mon problème vient du fait que toutes les cases ne tiennent pas dans l'écran et que je voudrais pouvoir aller voir les autres cases (par un scrolling par exemple ?). J'ai à peu près une dizaine de cases horizontales et verticales qui tiennent sur l'écran et le jeu en comporte une centaine horizontale et verticale.
 
Si quelqu'un a une idée...  :pt1cable:

Reply

Marsh Posté le 26-03-2004 à 13:25:55   

Reply

Marsh Posté le 26-03-2004 à 13:36:41    

moi j'en ai une :D  
 
 :bounce:  
 
 :whistle:  
 
 :lol:  
 
 [:sygus]  
 
bon allez... JScrollPane [:xp1700]

Reply

Marsh Posté le 26-03-2004 à 13:39:50    

Ok merci je vais regarder de plus près. J'avais déjà vu ce terme là quelque part, mais bon quand on débute, on se perd assez facilement !!

Reply

Marsh Posté le 26-03-2004 à 15:55:27    

Bon ben j'y comprends pas grand chose :
 
si quelqu'un peut m'aider avec mon source pour rajouter
un JScrollPane .....
 
 
import java.awt.event.*;
import java.applet.*;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;
import java.lang.*;
import java.*;
import javax.swing.*;
 
public class plateau extends Applet {
 
 
        Image img_terrain, img_unite;
 
        int interi = 61;
        int interj = 61;
        int interarm = 15;
 
 
 
        int fini = 51;
        int finj = 51;
        int debutx = 1; // 1 ou le x qu'on veut commencer
        int debuty = 1; // 1 ou le y qu'on veut commencer
        int i, j;
        String taille;
 
        Image map[][]= new Image [fini][finj];
        Image arm[][]= new Image [fini][finj];
 
        String n_ar;
 
public void init() {
      try {
 
           Class.forName ("oracle.jdbc.driver.OracleDriver" );
 
   Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:AlainBD","alain","alain" );
          // Lecture de la table armee
   PreparedStatement lect_hexa = conn.prepareStatement(
   "select camp_n, i_pre, terrain, typearmee, supply_n from hexagone, armee where hexx = ? and hexy = ? and hexx = hexxact (+) and hexy = hexyact (+)" );
 
 
          for (int j=1;j<finj;j++)
          {
 
              for (int i=1;i<fini;i++)
              {
 
                  lect_hexa.setInt(1,i + debutx - 1);
                  lect_hexa.setInt(2,j + debuty - 1);
                  ResultSet res_hexa = lect_hexa.executeQuery();
 
                  while (res_hexa.next())
                  {
                      n_ar = "";
                      String nom_terrain = res_hexa.getString("terrain" );
                      String nom_unite = res_hexa.getString("typearmee" );
                      int s_n = res_hexa.getInt("supply_n" );
                      int c_n = res_hexa.getInt("camp_n" );
                      String des_pre = res_hexa.getString("i_pre" );
                      n_ar = n_ar + des_pre;
 
                      if (s_n == 0)
                      {
                        nom_terrain = "supplyA";
                      }
 
                      if (s_n == 1)
                      {
                        nom_terrain = "supplyU";
                      }
 
 
                      taille = "60";
 
                      nom_terrain = taille + "_" + nom_terrain;
 
                      map[i][j]=getImage(getCodeBase(),nom_terrain + ".jpg" );
 
 
                      if (c_n == 0)
                      {
 
                          nom_unite = taille + "_" + nom_unite;
                          arm[i][j]=getImage(getCodeBase(),nom_unite + "_ax.jpg" );
                      }
 
                      if (c_n == 1)
                      {
 
                          nom_unite = taille + "_" + nom_unite;
                          arm[i][j]=getImage(getCodeBase(),nom_unite + "_al.jpg" );
                      }
 
 
                  }
 
 
                }
            }
 
 
                  } catch (Exception ex) {
         System.err.println( "Erreur : " + ex.getMessage());
  System.exit(1);
 
      }
    }
 
   public void paint(Graphics g) {
 
      for (int j=1;j<finj;j++)
      {
 
              for (int i=1;i<fini;i++)
              {
 
                          int a = i + debutx - 1;
                          int b = j + debuty - 1;
 
                          g.drawImage(map[i][j],i*interi - interi,j*interj - interj,this);
 
                          g.drawString(a + "," + b, i*interi - interi,j*interj - interj+10);
 
                          g.drawImage(arm[i][j],i*interi - interi + interarm,j*interj - interj + interarm,this);
 
                          g.drawString(n_ar, i*interi - interi + 20,j*interj - interj+20);
              }
 
      }
 
}
}

Reply

Marsh Posté le 30-03-2004 à 11:08:50    

Un petit up au cas où. J'ai fait pas mal d'essais, mais peut être c'est le concept du JScrollPane que j'ai mal compris. Dans mon init j'ai rajouté ceci (que j'ai trouvé sur un site internet). Tout marche sauf que j'ai pas de scrollbar qui apparaissent !
 
          // Create a scrollable text area
          JTextArea textArea = new JTextArea();
          JScrollPane pane = new JScrollPane(textArea);
 
          // Get the default scrollbar policy
          int hpolicy = pane.getHorizontalScrollBarPolicy();
          // JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED;
 
          int vpolicy = pane.getVerticalScrollBarPolicy();
          // JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED;
 
 
          // Make the scrollbars always appear
          pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
          pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
 
 
Help !

Reply

Marsh Posté le 30-03-2004 à 11:51:41    

faut mettre ton composant dans le JScrollPane


---------------
http://runnerstats.net
Reply

Marsh Posté le 30-03-2004 à 13:51:12    

Ouais mais là je suis paumé. j'ai essayé en mettant un composant de type JPanel, mais rien à faire... Il m'affiche rien du tout d'ailleurs.
 
         JPanel frame = new JPanel();
          JScrollPane pane = new JScrollPane(frame);
 
          // Get the default scrollbar policy
          int hpolicy = pane.getHorizontalScrollBarPolicy();
          // JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED;
 
          int vpolicy = pane.getVerticalScrollBarPolicy();
          // JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED;
 
 
          // Make the scrollbars always appear
          pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
          pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
 
          // Make the scrollbars never appear
          //pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
          //pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
 
 
          frame.setVisible(true);

Reply

Marsh Posté le 30-03-2004 à 15:06:37    

si tu fais pas un pane.add(qqch) je vois pas comment ça pourrait marcher


---------------
http://runnerstats.net
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed