これがコードです。
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 内で要素を移動する方が簡単だと考えましたが、機能していないようです。ちなみに、これはエレベーターが実際に動くのと同じように機能するので、それが私が言及しているイベントです. 誰かがそれについての考えを持っていれば、それも大歓迎です.