我试图在JPanel顶部放置一个.jpg图标,以表示板上的一块电路板。我有一个包含.java文件的GUI文件夹和另一个包含.jpg文件的文件夹。在JPanel顶部添加JLabel
- 主要Edit-- 示例代码
当方点击白色图标是为了放置,然后黑色等等等等,这是什么即时试图实现
一个非常基本的例子import java.awt.Dimension;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class gui extends JFrame implements MouseListener {
/**
*
*/
private static final long serialVersionUID = -973341728129968945L;
JLayeredPane layeredPane;
JPanel board;
JLabel piece;
int numSquares;
private boolean currentPlayer;
public gui(){
Dimension boardSize = new Dimension(600, 600);
numSquares = 6;
currentPlayer = true;
layeredPane = new JLayeredPane();
getContentPane().add(layeredPane);
layeredPane.setPreferredSize(boardSize);
layeredPane.addMouseListener(this);
board = new JPanel();
layeredPane.add(board, JLayeredPane.DEFAULT_LAYER);
board.setLayout(new GridLayout(numSquares, numSquares));
board.setPreferredSize(boardSize);
board.setBounds(0, 0, boardSize.width, boardSize.height);
for (int i = 0; i < (numSquares * numSquares); i++) {
JPanel square = new JPanel(new BorderLayout());
square.setBorder(BorderFactory.createLineBorder(Color.black));
square.setBackground(Color.green);
board.add(square);
}
}
public static void main(String[] args) {
JFrame frame = new gui();
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
frame.pack();
frame.setResizable(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@Override
public void mouseClicked(MouseEvent e) {
JPanel temp = (JPanel)board.findComponentAt(e.getX(), e.getY());
System.out.println(e.getX() + " " + e.getY());
if(currentPlayer){
ImageIcon white = new ImageIcon("l/Images/white.jpg");
piece = new JLabel(white);
temp.add(piece);
}
else{
ImageIcon black = new ImageIcon("/Images/black.jpg");
piece = new JLabel(black);
temp.add(piece);
}
currentPlayer = !currentPlayer;
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
}
}
我删除了我的答案,因为我看到你已经使用JPanels作为电路板的单元。我认为你可能需要创建并向我们展示一个[sscce](http://sscce.org),以便我们能够帮助你。 –
没有任何东西可以显示。代码运行时,会创建一个6乘6的黑板背景。然后,当一个cellis点击一个令牌(白色或黑色)是为了放置。但没有任何反应。 – CNevin561
如果你发布了可编译的,可运行的代码,我们可以更容易地研究它,理解它,修改它,并可能帮助你纠正它。由你决定。 –