有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java允许多个JLabel中的文本重叠

如果有必要回答的话,这里是上下文。我正在建造一个引擎,我将在其中制作一个电子游戏。它包括一个96 x 54(列x行)的字母表,以保持它们之间的间距均匀。正因为如此,如果任何解决方案都能尽可能地减少资源密集度,这将非常有帮助。我为这个引擎做了一个网络演示,除了有点慢之外,它完全按照预期工作。现在我正在将项目迁移到Java上,有些事情并没有按预期的那样工作

为了模拟HTML <table>,我在一对JPanel内使用了GridLayoutJLabel来保持大小不变,所有这些都在JFrame内。我面临的问题是,由于改变了表格的大小以改善外观,JLabel略微重叠。在web演示中,这很好,因为字母直接进入下一个方框。这就是我试图在Java中实现的目标,我一生都不知道该如何实现

这里有一张图片向你展示我的意思:

Here's an image to show you what I mean.

在左边的web演示中,我们在“a”的圆圈内有一圈下划线,在右边有字母“pqyjg”。其中一个下划线上还有一个灰色的小方框。这是下划线下方突出显示的框,显示下划线重叠1个像素

当我们把同样的代码放到Java版本中时,下划线不见了,字母“pqyjg”上的尾部也被切掉了。理想的效果是,它可以像左边的例子那样工作

我搜索了这个网站,互联网的其他部分,并通过许多Java类页面,寻找一种有用的方法,但没有结果

有人能告诉我一个类或方法,我可以在JLabel或任何其他组件上调用它来实现这个效果,而不改变表的大小吗

以下是我当前的代码,用于设置一切,以防对任何人有所帮助

import javax.swing.*;
import static java.lang.Math.*;
import java.awt.*;

public class transparencyExample{

    //Declaring constants
    public static final Color[] MAINFRAME = {new Color(0x35ce4a), new Color(0x111111)};

    //Creating static variables and methods
    private static JLabel tempLabel;
    private static JLabel[][] table = new JLabel[54][96];
    private static JPanel layout = new JPanel(new GridLayout(54,96));
    private static JPanel background = new JPanel();
    private static BoxLayout box = new BoxLayout(background, 0);
    private static JFrame frame = new JFrame("Transparency Example");
    private static void initialise(){

        //Adding labels to table
        for (int i = 0; i < 5184; i++){
            tempLabel = new JLabel("M", SwingConstants.CENTER);
            tempLabel.setFont(new Font("Courier", Font.PLAIN, 15));
            table[(int) floor((double) i / 96)][i % 96] = tempLabel;
        }

        //Laying out the table
        layout.setPreferredSize(new Dimension(1056, 594));
        layout.setOpaque(false);
        for(int i = 0; i < 5184; i++){
            layout.add(table[(int) floor((double) i / 96)][i % 96]);
        }
        background.setBackground(MAINFRAME[1]);
        background.add(layout);

        //Laying out the frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(background);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    //Fill table
    public static void fill(String s){
        for(int i = 0; i < 5184; i++){
            table[(int) floor((double) i / 96)][i % 96].setText(String.valueOf(s.charAt(i)));
        }
    }
    public static void main(String[] args){
        initialise();
        transparencyExample.fill("                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         aaaaaaaa                                                                                       a   a    aa                                                                                    a _____     a                                                                                  a _     ___  a                                                                                 a_         __  a                                                                               a _           _ a     pqyjg                                                                   aa _            _ a                                                                             a  _             _ a                                                                           a   _             _ a                                                                           a   _             _ a                                                                           a   _             _ a                                                                           a    _           _  a                                                                           a    __          _ a                                                                            a      __      __  a                                                                             a       _______   a                                                                             a                a                                                                              a               aa                                                                               aa            a                                                                                   aa       aa                                                                                       aa aaaa                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ");
    }
}

共 (0) 个答案