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

📄 tilepanel.java

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

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

/**
 *
 * @author  xiaoxin
 */
public class TilePanel extends javax.swing.JPanel {
    
    /** Creates new form TilePanel */
    public TilePanel() {
        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() {

        setMaximumSize(new java.awt.Dimension(168, 32767));
        setMinimumSize(new java.awt.Dimension(168, 0));
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 168, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 266, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents
    
    private void formMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseClicked
        if(tileImgs == null || logicImgs == null)
            return;
        int x = evt.getX();
        int y = evt.getY();
        
        
        int id = getImageID(x, y, MapEditorEX.isLogicLayer);
        if(id == -1)
            return;
        if(MapEditorEX.isLogicLayer){
            MapEditorEX.dragImg = logicImgs[id];
        }else{
            MapEditorEX.dragImg = tileImgs[id];
        }
        
        MapEditorEX.dragImgId = id;
        
        
    }//GEN-LAST:event_formMouseClicked
    
    private int getImageID(int x, int y, boolean isLogic){
        int row = y / (MapEditorEX.map.tileHeight + 2);
        int col = x / (MapEditorEX.map.tileWidth + 2);
        
        int num = getWidth() / (MapEditorEX.map.tileWidth + 2);
        if(isLogic){
            if(row * num + col >= logicImgs.length)
                return -1;
        }else{
            if(row * num + col >= tileImgs.length)
                return -1;
        }
        
        return row * num + col;
        
    }
    
    
    
    public static Image[] tileImgs;
    public static Image[] logicImgs;
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        
        
        
        
        if(MapEditorEX.isLogicLayer){
            //显示逻辑图块
            if(logicImgs != null){
                renderLogic(g);
            }
            
        }else{
            //显示地图图块
            if(tileImgs != null){
                renderTiles(g);
            }
            
        }
    }
    
    
    private void renderTiles(Graphics g){
        int width = getWidth();
        int num = width / (MapEditorEX.map.tileWidth + 2);
        
        int height = tileImgs.length / num + 1;
        
        int drawX = 0;
        int drawY = 0;
        for(int i = -1; ++i < height;){
            for(int j = -1; ++j < num;){
                drawX = j * (MapEditorEX.map.tileWidth + 2);
                drawY = i * (MapEditorEX.map.tileHeight + 2);
                if(i * num + j < tileImgs.length)
                    g.drawImage(tileImgs[i * num + j], drawX, drawY, tileImgs[i * num + j].getWidth(null), tileImgs[i * num + j].getHeight(null), null);
            }
        }
    }
    
    
    private void renderLogic(Graphics g){
        int width = getWidth();
        int num = width / (MapEditorEX.map.tileWidth + 2);
        
        int height = tileImgs.length / num + 1;
        
        int drawX = 0;
        int drawY = 0;
        for(int i = -1; ++i < height;){
            for(int j = -1; ++j < num;){
                drawX = j * (MapEditorEX.map.tileWidth + 2);
                drawY = i * (MapEditorEX.map.tileHeight + 2);
                if(i * num + j < logicImgs.length)
                    g.drawImage(logicImgs[i * num + j], drawX, drawY, tileImgs[i * num + j].getWidth(null), tileImgs[i * num + j].getHeight(null), null);
            }
        }
    }
    
    // 变量声明 - 不进行修改//GEN-BEGIN:variables
    // 变量声明结束//GEN-END:variables
    
}

⌨️ 快捷键说明

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