⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 showpanel.java

📁 这是一个手机端的地图编辑器
💻 JAVA
字号:
/*
 * ShowPanel.java
 *
 * Created on 2007年11月20日, 下午6:05
 */

package map;
import javax.swing.*;
import java.awt.*;

/**
 *
 * @author  xiaoxin
 */
public class ShowPanel extends javax.swing.JPanel {
    
    /** Creates new form ShowPanel */
    public ShowPanel() {
        initComponents();
        
    }
    
    
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
    private void initComponents() {

        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                formMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                formMouseExited(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                formMouseReleased(evt);
            }
        });
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                formComponentShown(evt);
            }
        });
        addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                formMouseDragged(evt);
            }
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                formMouseMoved(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 294, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 304, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents
    
    private void formMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseDragged
        if(MapEditorEX.dragImg != null){
            int x = evt.getX();
            int y = evt.getY();
            if(x <= rect[0] || x >= rect[0] + rect[2] || y <= rect[1] || y >= rect[1] + rect[3]){
                return;
            }
            dragX = evt.getX();
            dragY = evt.getY();
            int col = (x - rect[0]) / MapEditorEX.map.tileWidth;
            int row = (y - rect[1]) / MapEditorEX.map.tileHeight;
            if(MapEditorEX.isLogicLayer){
                if(MapEditorEX.dragImgId == TilePanel.logicImgs.length - 1){
                    MapEditorEX.map.setLogicLayer(row, col, (byte)0);
                }else{
                    MapEditorEX.map.setLogicLayer(row, col, (byte)1);;
                }
            }else{
                if(MapEditorEX.dragImgId == TilePanel.tileImgs.length - 1){
                    MapEditorEX.map.getLayer(MapEditorEX.curLayerID).setData(row, col, -1);
                }else{
                    MapEditorEX.map.getLayer(MapEditorEX.curLayerID).setData(row, col, MapEditorEX.dragImgId);
                }
            }
            
            repaint();
        }
    }//GEN-LAST:event_formMouseDragged
    
    private void formMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseMoved
        if(MapEditorEX.map != null){
            int col = evt.getX() / MapEditorEX.map.tileWidth;
            
            int row = evt.getY() / MapEditorEX.map.tileHeight;
            
            MapEditorEX.rowLB.setText(String.valueOf(row));
            MapEditorEX.colLB.setText(String.valueOf(col));
        }
        
        if(MapEditorEX.dragImg != null){
            dragX = evt.getX();
            dragY = evt.getY();
            repaint();
        }
    }//GEN-LAST:event_formMouseMoved
    
    private void formMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseReleased
        
        if(evt.getButton() == 3){
            MapEditorEX.dragImg = null;
            MapEditorEX.dragImgId = -1;
            repaint();
        }
    }//GEN-LAST:event_formMouseReleased
    
    private void formMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseExited
        
    }//GEN-LAST:event_formMouseExited
    private int dragX;
    private int dragY;
    
    private void formMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseEntered
        
    }//GEN-LAST:event_formMouseEntered
    
    private void formMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseClicked
        if(MapEditorEX.dragImg != null){
            int x = evt.getX();
            int y = evt.getY();
            if(x < rect[0] || x > rect[0] + rect[2] || y < rect[1] || y > rect[1] + rect[3]){
                return;
            }
            dragX = evt.getX();
            dragY = evt.getY();
            int col = (x - rect[0]) / MapEditorEX.map.tileWidth;
            int row = (y - rect[1]) / MapEditorEX.map.tileHeight;
            if(MapEditorEX.isLogicLayer){
                if(MapEditorEX.dragImgId == TilePanel.logicImgs.length - 1){
                    MapEditorEX.map.setLogicLayer(row, col, (byte)0);
                }else{
                    MapEditorEX.map.setLogicLayer(row, col, (byte)1);;
                }
            }else{
                if(MapEditorEX.dragImgId == TilePanel.tileImgs.length - 1){
                    MapEditorEX.map.getLayer(MapEditorEX.curLayerID).setData(row, col, -1);
                }else{
                    System.out.println("id: " + MapEditorEX.dragImgId);
                    MapEditorEX.map.getLayer(MapEditorEX.curLayerID).setData(row, col, MapEditorEX.dragImgId);
                }
            }
            
            repaint();
        }
    }//GEN-LAST:event_formMouseClicked
    
    private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
        
    }//GEN-LAST:event_formComponentShown
    
    Image bg;
    //区域
    public int[] rect = new int[4];
    
    boolean isShowGrid;
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        //绘制区域
        g.setColor(Color.LIGHT_GRAY);
        g.fillRect(rect[0], rect[1], rect[2], rect[3]);
        
        
        
        
        
        
        
        //绘制地图
        if(MapEditorEX.map != null){
            for(int i = -1; ++i <= MapEditorEX.curLayerID;){
                Layer layer = MapEditorEX.map.getLayer(i);
                if(layer.isView){
                    layer.render(g, rect[0], rect[1]);
                }
            }
        }
        
        //显示逻辑层
        if(MapEditorEX.isLogicLayer){
            MapEditorEX.map.renderLogic(g, rect[0], rect[1]);
        }
        
        if(isShowGrid && MapEditorEX.map != null){
            renderGrid(g);
        }
        
        if(MapEditorEX.dragImg != null){
            int x = dragX - MapEditorEX.map.tileWidth / 2;
            int y  = dragY - MapEditorEX.map.tileHeight / 2;
            g.drawImage(MapEditorEX.dragImg, x, y, null);
        }
    }
    
    
    
    
    public void updateScale(){
        rect[0] = 0;
        rect[1] = 0;
        rect[2] = MapEditorEX.map.column * MapEditorEX.map.tileWidth;
        rect[3] = MapEditorEX.map.row * MapEditorEX.map.tileHeight;
        this.setSize(rect[2], rect[3]);
    }
    
    
    private void renderGrid(Graphics g){
        int drawY = rect[1];
        int drawX = rect[0];
        g.setColor(Color.BLACK);
        for(int i = -1; ++i < MapEditorEX.map.row + 1;){
            g.drawLine(drawX, drawY, drawX + rect[2], drawY);
            drawY += MapEditorEX.map.tileHeight;
        }
        drawY = rect[1];
        for(int i = -1; ++i < MapEditorEX.map.column + 1;){
            g.drawLine(drawX, drawY, drawX, drawY + rect[3]);
            drawX += MapEditorEX.map.tileWidth;
        }
    }
    // 变量声明 - 不进行修改//GEN-BEGIN:variables
    // 变量声明结束//GEN-END:variables
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -