• <small id='tfcTq'></small><noframes id='tfcTq'>

    <i id='tfcTq'><tr id='tfcTq'><dt id='tfcTq'><q id='tfcTq'><span id='tfcTq'><b id='tfcTq'><form id='tfcTq'><ins id='tfcTq'></ins><ul id='tfcTq'></ul><sub id='tfcTq'></sub></form><legend id='tfcTq'></legend><bdo id='tfcTq'><pre id='tfcTq'><center id='tfcTq'></center></pre></bdo></b><th id='tfcTq'></th></span></q></dt></tr></i><div id='tfcTq'><tfoot id='tfcTq'></tfoot><dl id='tfcTq'><fieldset id='tfcTq'></fieldset></dl></div>

      <legend id='tfcTq'><style id='tfcTq'><dir id='tfcTq'><q id='tfcTq'></q></dir></style></legend>
    1. <tfoot id='tfcTq'></tfoot>
        <bdo id='tfcTq'></bdo><ul id='tfcTq'></ul>

      1. 在Java中为网格创建绘制矩形(填充黑色)函数

        Creating a draw rectangle (filled with black color) function in Java for a grid(在Java中为网格创建绘制矩形(填充黑色)函数)

        <small id='SctGd'></small><noframes id='SctGd'>

            <tbody id='SctGd'></tbody>
            <i id='SctGd'><tr id='SctGd'><dt id='SctGd'><q id='SctGd'><span id='SctGd'><b id='SctGd'><form id='SctGd'><ins id='SctGd'></ins><ul id='SctGd'></ul><sub id='SctGd'></sub></form><legend id='SctGd'></legend><bdo id='SctGd'><pre id='SctGd'><center id='SctGd'></center></pre></bdo></b><th id='SctGd'></th></span></q></dt></tr></i><div id='SctGd'><tfoot id='SctGd'></tfoot><dl id='SctGd'><fieldset id='SctGd'></fieldset></dl></div>
            <tfoot id='SctGd'></tfoot>
            • <bdo id='SctGd'></bdo><ul id='SctGd'></ul>
            • <legend id='SctGd'><style id='SctGd'><dir id='SctGd'><q id='SctGd'></q></dir></style></legend>

                1. 本文介绍了在Java中为网格创建绘制矩形(填充黑色)函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我在我的程序中创建了一个网格.下面是用于创建网格的代码.

                  I have created a grid in my program. Below is the code used to create the grid.

                  import java.awt.Graphics;
                  
                  import javax.swing.JComponent;
                  import javax.swing.JFrame;
                  
                  class Grid extends JComponent {
                      public void paint(Graphics g) {
                          g.drawRect (10, 10, 800, 500);    
                  
                          for (int i = 10; i <= 800; i+= 10)
                              g.drawLine (i, 10, i, 510);
                  
                          for (int i = 10; i <= 500; i+= 10)
                              g.drawLine (10, i, 810, i);
                      }
                  }
                  
                  public class CoreControl {
                  
                      public static void main(String[] a) {
                          JFrame window = new JFrame();
                          window.setSize(840,560);
                          window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                          window.getContentPane().add(new Grid());
                          window.setVisible(true);
                      }
                  
                  }
                  

                  我想做的是创建一个函数,该函数将根据我给它的坐标绘制一个矩形(用黑色填充).基本上我想用黑色填充网格的某些单元格,我的想法是在单元格坐标上绘制黑色填充矩形.如何实现这个功能?

                  What I want to do is to create a function which will draw a rectangle (filled with black color) based on the coordinates that I give it. Basically I want to populate certain cells of the grid with black color and my idea is to draw black filled rectangles on the cell coordinates. How do I make this function?

                  我尝试创建另一个名为 drawRectangle 的类并在主函数中调用它,例如 window.getContentPane().add(new drawRectangle());但这不起作用(只显示 drawRectangle 而不是网格).

                  I tried making another class called drawRectangle and called it in the main function like so window.getContentPane().add(new drawRectangle()); however that did not work (only drawRectangle shows up and not the grid).

                  我还希望能够反复使用此功能来不断创建矩形.

                  I also want to be able to use this function repeatedly to keep creating rectangles.

                  如何创建这个函数?

                  另外,如果您知道我应该构建这个程序的更好方法,请告诉我(我是 Java 新手,所以我愿意接受任何建议).

                  Also if you know a better way that I should structure this program please let me know (I am new to Java so I am open to any suggestions).

                  推荐答案

                  1. 不要使用paint,使用paintComponent并且不要忘记调用super.paintComponent
                  2. JComponent 可能不是最佳选择,JPanel 可能是更好的选择
                  3. Graphics#fillRect(int, int, int, int)?
                  1. Don't use paint, use paintComponent and don't forget to call super.paintComponent
                  2. JComponent may not be the best choice, JPanel is probably a better choice
                  3. What's wrong with Graphics#fillRect(int, int, int, int)?

                  您可以看看 Performing Custom Painting 和 2D 图形了解更多详情.

                  You might to take a look at Performing Custom Painting and 2D Graphics for more details.

                  我建议不要尝试使用第二个组件来执行填充.只需在网格类中提供一个方法,该方法提供单元格的 x/y 位置(以网格形式)并在 paintComponent 方法中填充单元格

                  I'd advice against trying to have a second component to performing the filling. Simply provide a method in you grid class that supplies the cell's x/y position (in grid terms) and fill the cell within the paintComponent method

                  更新示例

                  import java.awt.Color;
                  import java.awt.EventQueue;
                  import java.awt.Graphics;
                  import java.awt.Point;
                  import java.util.ArrayList;
                  import java.util.List;
                  import javax.swing.JFrame;
                  import javax.swing.JPanel;
                  import javax.swing.UIManager;
                  import javax.swing.UnsupportedLookAndFeelException;
                  
                  public class CoreControl {
                  
                      public static class Grid extends JPanel {
                  
                          private List<Point> fillCells;
                  
                          public Grid() {
                              fillCells = new ArrayList<>(25);
                          }
                  
                          @Override
                          protected void paintComponent(Graphics g) {
                              super.paintComponent(g);
                              for (Point fillCell : fillCells) {
                                  int cellX = 10 + (fillCell.x * 10);
                                  int cellY = 10 + (fillCell.y * 10);
                                  g.setColor(Color.RED);
                                  g.fillRect(cellX, cellY, 10, 10);
                              }
                              g.setColor(Color.BLACK);
                              g.drawRect(10, 10, 800, 500);
                  
                              for (int i = 10; i <= 800; i += 10) {
                                  g.drawLine(i, 10, i, 510);
                              }
                  
                              for (int i = 10; i <= 500; i += 10) {
                                  g.drawLine(10, i, 810, i);
                              }
                          }
                  
                          public void fillCell(int x, int y) {
                              fillCells.add(new Point(x, y));
                              repaint();
                          }
                  
                      }
                  
                      public static void main(String[] a) {
                          EventQueue.invokeLater(new Runnable() {
                              @Override
                              public void run() {
                                  try {
                                      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                                  } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                                  }
                  
                                  Grid grid = new Grid();
                                  JFrame window = new JFrame();
                                  window.setSize(840, 560);
                                  window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                  window.add(grid);
                                  window.setVisible(true);
                                  grid.fillCell(0, 0);
                                  grid.fillCell(79, 0);
                                  grid.fillCell(0, 49);
                                  grid.fillCell(79, 49);
                                  grid.fillCell(39, 24);
                              }
                          });
                      }
                  }
                  

                  这篇关于在Java中为网格创建绘制矩形(填充黑色)函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)
                  How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)
                  Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)
                  Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)
                  How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)
                  How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)
                2. <i id='gSBma'><tr id='gSBma'><dt id='gSBma'><q id='gSBma'><span id='gSBma'><b id='gSBma'><form id='gSBma'><ins id='gSBma'></ins><ul id='gSBma'></ul><sub id='gSBma'></sub></form><legend id='gSBma'></legend><bdo id='gSBma'><pre id='gSBma'><center id='gSBma'></center></pre></bdo></b><th id='gSBma'></th></span></q></dt></tr></i><div id='gSBma'><tfoot id='gSBma'></tfoot><dl id='gSBma'><fieldset id='gSBma'></fieldset></dl></div>

                  <small id='gSBma'></small><noframes id='gSBma'>

                  <legend id='gSBma'><style id='gSBma'><dir id='gSBma'><q id='gSBma'></q></dir></style></legend>
                  • <bdo id='gSBma'></bdo><ul id='gSBma'></ul>

                        <tbody id='gSBma'></tbody>

                      <tfoot id='gSBma'></tfoot>