java - 在我创建 JPanel 的同一部分绘制网格线?

标签 java swing

我需要为填字游戏构建网格线。我想知道是否可以在创建 JPanel 及其属性的同一部分中执行此操作,而不是在方法中执行此操作?

class CrosswordWindow extends JFrame {


public JPanel crossPanel;

public CrosswordWindow() {
    super("Crossword");  

    setLayout(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);

    /*
    bunch of buttons, labels, JLists etc.
    */

    int size;
    crossPanel = new JPanel();
    crossPanel.setBounds(240, 40, 680, 360);
    crossPanel.setBackground(Color.white);
    crossPanel.setBorder(BorderFactory.createEtchedBorder(1, Color.lightGray, Color.lightGray));
    add(crossPanel);

我在尝试绘制填字游戏的网格线时遇到了困难。

最佳答案

首先,永远不要这样做:setLayout(null);。虽然 null 布局和 setBounds() 对于 Swing 新手来说似乎是创建复杂 GUI 的最简单、最好的方法,但创建的 Swing GUI 越多,使用它们时遇到的困难就越严重。当 GUI 调整大小时,它们不会调整组件的大小,它们是增强或维护的皇家女巫,放置在滚动 Pane 中时它们完全失败,在所有平台或与原始分辨率不同的屏幕分辨率上查看时,它们看起来非常糟糕.

但更重要的是,我的建议是不要绘制网格线。相反,请考虑使用包含 GridLayout 的 JPanel,您可以将其水平和垂直间隙设置为 1,如果要显示网格线,则将背景设置为黑色,然后使用接受单个字符的 JLabels 或 JTextFields 填充它。

关于java - 在我创建 JPanel 的同一部分绘制网格线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29292400/

相关文章:

java - jboss-as-maven-plugin 无法部署到远程 JBoss AS7?

java - jmenu 中的图像来自 java 中的 jar 文件

java - paint() 不会在 JLabel 动画中被调用

java - 如何使JTable中的行可编辑(false)

java - 在运行时在 netbeans 中创建组件

java - Excel 中的空行

java - ArrayList<SensorEvent>.add(...) 开始覆盖值

java - 如何在控制台输出上对齐字符串

Java四面体表面积和体积代码

java - 设置 JOptionPane.showMessageDialog 显示前面