我想在JPanel中做一些绘图但是封闭的JFrame大小似乎与我要求绘制坐标的地方不匹配。
在我的示例代码中,JFrame大小设置为(700,700),最后一个点绘制在(600,600)。我希望这个点可以从右边和底边画100个像素,但它不是(请看屏幕截图)。
这是我正在使用的代码:
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Scratch extends JPanel {
static int frameWidth = 700;
static int frameHeight = 700;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(frameWidth, frameHeight);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Scratch scratch = new Scratch();
frame.getContentPane().add(scratch);
frame.setVisible(true);
}
@Override
public void paintComponent(Graphics g) {
g.drawRect(100, 100, 1, 1);
g.drawString("100", 100, 100);
g.drawRect(200, 200, 1, 1);
g.drawString("200", 200, 200);
g.drawRect(300, 300, 1, 1);
g.drawString("300", 300, 300);
g.drawRect(400, 400, 1, 1);
g.drawString("400", 400, 400);
g.drawRect(500, 500, 1, 1);
g.drawString("500", 500, 500);
g.drawRect(600, 600, 1, 1);
g.drawString("600", 600, 600);
}
}
答案 0 :(得分:3)
如果包含窗口装饰,您的JFrame可能是700x700。由于您的paintComponent()
方法属于JFrame中的面板,因此所有项目都将使用面板左上角的原点绘制,而不是JFrame的左上角。
可能的解决方法是让您的面板700x700并使JFrame相应调整大小。
答案 1 :(得分:2)
只有一个猜测:
public class Scratch extends JPanel {
static int frameWidth = 700;
static int frameHeight = 700;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Scratch scratch = new Scratch();
scratch.setSize(frameWidth, frameHeight);
frame.getContentPane().add(scratch);
frame.pack();
frame.setVisible(true);
}