我正在制作一个最终项目的游戏,我需要在JPanel的中间出现一个大的“X”标签。我有JPanels出现但标签不会出现,因为我没有布局管理器,但如果我使用布局管理器,我的整个项目都会被更改。这是我必须做的项目,你可以看到我正在尝试做什么。
创建一款可帮助新鼠标用户改善手眼协调能力的游戏。在JFrame中,使用8行和6列在GridLayout中显示48个JPanel的数组。在其中一个面板上随机显示X.当用户单击正确的面板(显示X的面板)时,删除X并将其显示在另一个面板上。在用户成功“击中”正确的面板10次后,显示包含用户百分比(点击次数除以点击次数)的祝贺消息。将文件另存为JCatchTheMouse.java。
这是我的代码
package CatchTheMouse;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CatchTheMouse extends JFrame implements ActionListener, MouseListener{
final int ROWS = 8;
final int COLS = 6;
final int GAP = 2;
final int MAX_PANELS = ROWS * COLS;
int clicks;
int hits;
int percentage = 0;
int width;
int height;
int panelX;
int panelY;
int whichPanel = (int)(Math.random() * 48 + 1);
int numberOfPanels = 1;
JLabel grats = new JLabel("");
JLabel spot = new JLabel("X");
JPanel[] panel = new JPanel[MAX_PANELS];
JPanel pane = new JPanel(new GridLayout(ROWS, COLS, GAP, GAP));
Font xFont = new Font("Ariel", Font.BOLD, 30);
Font font = new Font("Ariel", Font.PLAIN, 12);
public CatchTheMouse() {
super("Catch the Mouse");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
add(spot);
spot.setFont(xFont);
add(grats);
grats.setFont(font);
add(pane);
for(int x = 0; x < MAX_PANELS; ++x) {
panel[x] = new JPanel();
pane.add(panel[x]);
panel[x].setBackground(Color.RED);
}
pane.setBackground(Color.BLACK);
panelX = panel[whichPanel].getX();
panelY = panel[whichPanel].getY();
width = panel[whichPanel].getWidth() / 2;
height = panel[whichPanel].getHeight() / 2;
spot.setBounds(panelX, panelY, width, height);
}
public void mouseClicked(MouseEvent e) {
clicks = e.getClickCount();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void actionPerformed(ActionEvent e) {
}
public static void main(String[] args) {
CatchTheMouse frame = new CatchTheMouse();
frame.setVisible(true);
}
}
答案 0 :(得分:0)
你的位置被吸引到所有其他面板后面。如果你添加
setComponentZOrder(spot, 0);
这将导致它被绘制在其他一切之上。
更好的方法是在你的面板上绘制x而不是在它们之上。
编辑:
您可以使用
将x添加到特定面板panel[0].add(spot);
答案 1 :(得分:0)
制作另一个JPanel
并将其放在第一个JPanel
内。将JLabel
和Layout
添加到第二个JPanel
,第一个JPanel
内。{/ p>
相应地设置嵌套 - {{1}}和其他坐标位置。