0

これがコードです。

    public class Habitacion extends JFrame{
   ArrayList <JButton> botones=new ArrayList();
   ArrayList<ascensor> ascensores=new ArrayList();
   boolean ban=true;
   int numeroX=0;
    int numeroY=0;
    int i=0,j=0,k=0;
    JPanel botonesPanel;
    JPanel panelAscensores;
    public Habitacion(){         
    //JFrame ventana = new JFrame();
    this.setTitle("ascensor");
    this.setLayout(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setResizable(false);
    this.setSize(1366,768);
    this.botonesPanel= new JPanel(new GridLayout(8, 1));
    this.panelAscensores= new JPanel(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();    
    for(i=0;i<8;i++){
        numeroX=0;
        for(j=0;j<10;j++){
            if(ascensores.size()!=10){
                ascensores.add(new ascensor(5+numeroX,20+numeroY));
                c.fill = GridBagConstraints.CENTER;
                c.gridx = j;
                c.gridy = 0;
                this.panelAscensores.add(ascensores.get(j), c);
                ascensores.get(j).setBounds(0+numeroX,0,100,720);
            }
this.setLayout(new BorderLayout());
       this.add(botonesPanel,BorderLayout.EAST);
         this.add(panelAscensores,BorderLayout.CENTER);
        }

エレベータークラスです。Habitacion クラス (フレーム) には他にもありますが、Lables を視覚化せずに実装できないのは MouseListener です。

public class ascensor extends JPanel implements Runnable{
 public int posX,y,newY,puertaDer,puertaIzq;
 //MiMouseAdapter e=new MiMouseAdapter();
 Thread hilo;
 boolean ban=true;

public ascensor(int posX,int posY){
    this.posX=posX;
    this.y=posY;
    this.newY=posY;
    puertaDer=posX;
    puertaIzq=posX+40;
    hilo=new Thread(this);
}

@Override
public void run() {
    int numero=0;
    Boolean bandera=true;

    while(true){
    while(bandera){
        if(newY < y)
            numero=-1;
        else
            numero=1;
        System.out.println(y);
        try {
            Thread.sleep(10);
        } catch (InterruptedException ex) {

        }
        y=y+numero;
        if(y==newY)                
            hilo.suspend();
        repaint();
    }       
    System.out.println("posicion Y:");
    System.out.println(newY);
    repaint();
    }

}
 @Override
public void paint(Graphics g) {
    super.paint(g);
    Graphics2D pluma=(Graphics2D)g;

    g.drawRect(posX,newY+10,40, 50);
    pluma.setColor(Color.red);
    pluma.drawLine(puertaDer, 10+newY, puertaDer, 60+newY);
    pluma.drawLine(puertaIzq, 10+newY,puertaIzq, 60+newY);
    }
  }
}

このコンテキストでは、Ascensores は JLAbel から拡張されたクラスです。問題は、ユーザーがイベントをトリガーしたときにこれらのパネルを移動する必要があることです。GridBagLayout 内で要素を移動する方が簡単だと考えましたが、機能していないようです。ちなみに、これはエレベーターが実際に動くのと同じように機能するので、それが私が言及しているイベントです. 誰かがそれについての考えを持っていれば、それも大歓迎です.

4

0 に答える 0