Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有布局管理器的情况下显示JLabel 我正在为一个最终的项目做一个游戏,我需要一个标签,它是一个大的“X”出现在JPAND的中间。我有JPanel出现,但标签不会出现,因为我没有布局管理器,但如果我使用布局管理器,我的整个项目都会改变。这是我必须做的项目,这样你就可以看到我在努力做什么_Java_Eclipse_Swing_Layout_Jlabel - Fatal编程技术网

Java 如何在没有布局管理器的情况下显示JLabel 我正在为一个最终的项目做一个游戏,我需要一个标签,它是一个大的“X”出现在JPAND的中间。我有JPanel出现,但标签不会出现,因为我没有布局管理器,但如果我使用布局管理器,我的整个项目都会改变。这是我必须做的项目,这样你就可以看到我在努力做什么

Java 如何在没有布局管理器的情况下显示JLabel 我正在为一个最终的项目做一个游戏,我需要一个标签,它是一个大的“X”出现在JPAND的中间。我有JPanel出现,但标签不会出现,因为我没有布局管理器,但如果我使用布局管理器,我的整个项目都会改变。这是我必须做的项目,这样你就可以看到我在努力做什么,java,eclipse,swing,layout,jlabel,Java,Eclipse,Swing,Layout,Jlabel,创建一个游戏,帮助新的鼠标用户提高他们的手眼协调。在JFrame中,使用八行六列在GridLayout中显示48个JPanel的数组。在其中一个面板上随机显示一个X。当用户单击正确的面板(显示X的面板)时,移除X并将其显示在其他面板上。在用户成功“点击”正确的面板10次后,显示一条祝贺消息,其中包括用户的百分比(点击次数除以点击次数)。将文件另存为JCatchTheMouse.java 这是我的密码 package CatchTheMouse; import java.awt.*; impor

创建一个游戏,帮助新的鼠标用户提高他们的手眼协调。在JFrame中,使用八行六列在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);
    }
}
packatchethemouse;
导入java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类CatchTheMouse扩展JFrame实现ActionListener、MouseStener{
最终整数行=8;
最终整数COLS=6;
最终int间隙=2;
最终int MAX_面板=行*列;
int点击;
整数命中率;
整数百分比=0;
整数宽度;
内部高度;
国际专题讨论会X;
专家组;
int whichPanel=(int)(Math.random()*48+1);
int numberOfPanels=1;
JLabel-grats=新JLabel(“”);
JLabel spot=新JLabel(“X”);
JPanel[]面板=新的JPanel[MAX_面板];
JPanel窗格=新JPanel(新网格布局(行、列、间隙、间隙));
Font xFont=新字体(“Ariel”,Font.BOLD,30);
Font Font=新字体(“Ariel”,Font.PLAIN,12);
公共捕鼠室(){
超级(“抓老鼠”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设置大小(300300);
加(点);
spot.setFont(xFont);
添加(grats);
grats.setFont(字体);
添加(窗格);
对于(int x=0;x
您的位置正在所有其他面板后面绘制。如果你加上

setComponentZOrder(spot, 0);
这将导致它被绘制在所有其他内容之上

更好的方法是在面板内部绘制x,而不是在面板顶部

编辑:

您可以使用将x添加到特定面板

panel[0].add(spot);

制作另一个
JPanel
并将其放入第一个
JPanel
中。将
JLabel
Layout
添加到第二个
JPanel
,即第一个
JPanel


设置嵌套-
JPanel
和其他坐标的相应位置。

我该怎么做?我刚试过,但现在它只显示X,什么也不显示else@buckley183我的意思是不要这样做(将x添加到主面板),但是如果你这样做了,你必须弄清楚如何使标签的背景透明
Font xFont=new Font(“Ariel”,Font.BOLD,30)拼写为“Arial”(无“E”),可能仅在Windows上可用。出于这两个原因,最好使用
Font.SANS\u SERIF
1)可以在编译时检查。2) 是跨平台的。也就是说,它将在Windows上使用Arial字体,在OS X上使用Helvetica字体,在Unix/Linux上使用默认的未修饰('san serif')字体。“如何在没有布局管理器的情况下显示JLabel”顺便问一句-当问题描述明确指出“。在GridLayout中显示48个JPanel的数组…”时,为什么不使用布局管理器就尝试这样做?