java - 如何为 JApplet 制作布局

标签 java swing user-interface jtextfield japplet

我正在创建一个简单的数独游戏。因为这是我的第一个“大”,所以我想自己做所有事情(没有我通常用来制作 GUI 的 NetBeans 界面设计器)。因此,对于 GUI,我创建了一个扩展 JApplet 的类,并在 paint() 方法中绘制了一个简单的数独字段。

现在我需要制作 81 个文本字段,每个文本字段将包含 1 个数字。我如何将它们定位在屏幕上?另外,我正在考虑制作一个数组,这样我就可以用一个 for 循环更改字段的 entre 矩阵。

最佳答案

建议:

  • 切勿直接在顶级组件(如 JApplet、JFrame、JDialog 等)的 paint 方法中绘制。
  • 如果您需要进行自定义绘图,请在扩展 JComponent 的组件(例如 JPanel 或 JComponent 本身)的 paintComponent(...) 方法覆盖中执行此操作。
  • 您的问题并不真正需要定制绘画,至少现在不需要,而且可以通过其他方式更好、更简单地解决。
  • 使用 JLabel、JTextFields 等组件...并使用 Swing 布局管理器(上述其他方法)定位它们。您可以在此处找到有关如何使用它的教程:Laying Out Components in a Container
  • 首先要关注的布局包括数独“单元格”的 GridLayout 和整个 GUI 的 BorderLayout。至少在开始时避免使用 GridBagLayout 和 GroupLayout。
  • 请记住,您可以通过嵌套每个使用简单布局管理器的 JPanel 来创建复杂的应用程序。
  • “绘制”网格线的一种简单方法是设置使用 GridLayout 并将 JTextFields 保存为 Color.BLACK 的 JPanel 的背景色,并确保为您的 GridBagLayout 提供一个小的垂直和水平间隙,以便黑色显示通过。上面列出的教程将向您展示如何执行此操作。
  • 如果这是我的应用程序,我会将我的 GUI 用于创建一个包含该应用程序的 JPanel。然后,如果我需要在 JApplet 中显示它,我会创建一个非常小的应用程序,它是 JApplet 的子类,然后在 init() 方法中,将我的 Sudoku JPanel 添加到 JApplet 的 contentPane 中。这样,如果我想在 JFrame 中显示我的应用程序,我需要做的就是创建另一个创建 JFrame 的小类,并将我的 Sudoku JPanel 添加到 JFrame 的 contentPane 中,然后调用 pack( ) 在 JFrame 上,然后是 setVisible(true)

关于如何将 JPanel 添加到 JApplet 的问题,教程将再次向您展示如何执行此操作。如果你还没有链接到教程的大索引,你会想要这样做:The Really Big Index .

一个非常简单的例子是这样的:

import java.lang.reflect.InvocationTargetException;
import javax.swing.*;

public class MyApplet extends JApplet {
   @Override
   public void init() {
      try {
         SwingUtilities.invokeAndWait(new Runnable() {
            public void run() {
               getContentPane().add(new MyJPanel());             
            }
         });
      } catch (InterruptedException e) {
         e.printStackTrace();
      } catch (InvocationTargetException e) {
         e.printStackTrace();
      }
   }
}

关于java - 如何为 JApplet 制作布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9342334/

相关文章:

java - 在 JInternalFrame 中单击关闭 (X) 按钮时如何执行某些操作

java - 使用 BoxLayout 垂直居中内容

Java GUI 帮助(JFrame、JButton 等)

java - Java 中的自动文件/输入流处理

java - Spring - 从项目结构加载文件夹作为目录?

java - Get 方法错误地返回空值

java - Swing Java 中的累积可运行项

java - android.support.v7.widget.GridLayout 实例化失败

java - 如何防止 JFrame 关闭

python - 在 Python kivy 应用程序中使用操作栏时遇到问题