嗨,我有一个小问题。我有一个JFrame
,其中JComponent
用于显示图形。
组件的首选大小为800x600,我创建JFrame
,JComponent
就像这样(GC
是组件):
public static void main(String[] args) {
mainframe = new JFrame();
mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainframe.add(GC);
mainframe.pack();
mainframe.setResizable(false);
mainframe.setVisible(true);
}
然后我画这样的图形:
public void paintComponent(final Graphics g)
{
//temp bg
g.setColor(Color.red);
g.fillRect(Global.leftborder, 0, 600, 600);
//code code.....
}
问题是即使它在组件的按钮上留下了10像素的白色 该组件的高度为600像素。我意识到这是因为(0,0)位于整个窗口的左上角而不是组件上。
有没有办法解决这个问题而不必每次画一些东西时都要在高度和宽度上添加10个像素?
答案 0 :(得分:3)
您应该覆盖组件paintComponent
方法而不是框架。这样翻译应该已经正确。
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
frame.add(new TestComponent());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
static class TestComponent extends JComponent {
@Override
public Dimension getPreferredSize() {
return new Dimension(800, 600);
}
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.red);
g.fillRect(10, 0, 600, 600);
}
}
}