【发布时间】:2020-07-13 17:33:07
【问题描述】:
所以,我试图在 JPanel (Rect) 上绘制一个矩形,然后将其添加到我的主 JFrame。矩形应该在我的窗口中间,但它却在窗口之外。
我尝试过的事情:
- 将 JPanel 添加到 JFrame,然后将 Rect 添加到 JPanel,没有任何变化。
- 将 JFrames 布局设置为
null,矩形消失不见。
相关代码:
Main.java
package sudoku_solver;
public class Main
{
public static void main(String[] args)
{
int[][] board = Board.getBoard();
Solver solver = new Solver(board);
Interface gui = new Interface();
gui.createFrame();
gui.drawGrid(board);
solver.solve();
solver.print();
}
}
Interface.java
package sudoku_solver;
import java.awt.*;
import javax.swing.*;
public class Interface
{
private static class Rect extends JPanel
{
private static final long serialVersionUID = 1L;
int x;
int y;
int rectWidth;
int rectHeight;
Color color;
public Rect(int _x, int _y, int _rectWidth, int _rectHeight, Color _color)
{
x = _x;
y = _y;
rectWidth = _rectWidth;
rectHeight = _rectHeight;
color = _color;
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawRect(x, y, rectWidth, rectHeight);
g2d.setColor(color);
}
}
static JFrame frame;
static int windowWidth = 580;
static int windowHeight = 580;
static int cellSize = windowWidth / 9;
public void createFrame()
{
frame = new JFrame("Sudoku");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(windowWidth, windowHeight);
frame.setVisible(true);
}
public void drawGrid(int[][] bo)
{
drawBorder();
}
private static void drawBorder()
{
Rect rect = new Rect(20, 20, windowWidth - 20, windowHeight - 20, Color.black);
frame.add(rect);
}
}
输出:
试图找到其他有同样问题的人,但找不到任何人。谢谢!
【问题讨论】:
标签: java swing user-interface awt