我正在尝试使用JPanel绘制到窗口,但是什么都没有显示。
我尝试过在线查找,但找不到任何内容。
private void initialize()
{
_frame = new JFrame(_name);
_panel = new JPanel();
_frame.setSize(_scaledSize);
_frame.setLocationRelativeTo(null);
_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
_frame.setResizable(true);
_panel.setPreferredSize(_scaledSize);
_panel.setMinimumSize(_scaledSize);
_panel.setMaximumSize(_scaledSize);
_frame.getContentPane().add(_panel);
_frame.pack();
_frame.setVisible(true);
}
public JPanel getPanel()
{
return _panel;
}
负责绘制的方法
public void draw()
{
Graphics graphics;
graphics = _display.getPanel().getGraphics();
graphics.setColor(Color.black);
graphics.drawRect(20, 20, 100, 100);
}
显示空白屏幕...什么也没画。
答案 0 :(得分:0)
要绘制到JPanel,请将其布局设置为空_panel.setLayout(null);
(如果要添加多个形状)。将其布局设置为_panel.setLayout(new CardLayout
(如果要仅添加1个形状)。
因此,您的主要方法将变为 * NB Shape
是我们要绘制的面板
Shape shape = new Shape();
shape.setSize(new Dimension(150, 150));
shape.setPreferredSize(new Dimension(150, 150));
_panel.add(shape).setLocation(0, 0);
形状代码将变为
class Shape extends JPanel {
public GeneralPath getShape() {
GeneralPath path = new GeneralPath();
path.moveTo(20, 20);
path.lineTo(20, 40);
path.lineTo(40,40);
path.lineTo(40,20);
path.closePath();
return path;
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
GeneralPath pt = getShape();
g2d.scale(2, 2);
g2d.draw(pt);
}
}