📄 tilepanel.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 + -