Я пытаюсь рисовать прямоугольник в JPanel, но он не появляется, но работает в кадре.Ничего не рисуется при рисовании в JPanel
если вы раскомментируете //frame.getContentPane().add(rect); // Рисуем если его в кадре и comment frame.getContentPane(). Add (panel); // но не в панели прямоугольник будет рисовать.
Спасибо за помощь.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DrawingRect{
public static void main(String[] args) {
DrawingRect d = new DrawingRect();
}
public DrawingRect(){
JFrame frame = new JFrame("Drawing a rect");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension (500,500));
Rect rect = new Rect();
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension (500,500));
panel.setVisible(true);
panel.add(rect);
//frame.getContentPane().add(rect); //Will draw if its in the frame
frame.getContentPane().add(panel); // but not in the panel
frame.pack();
frame.setVisible(true);
panel.repaint();
frame.repaint();
}
public class Rect extends JComponent{
private static final long serialVersionUID = 1L;
public void paint(Graphics g)
{
g.setColor(Color.black);
g.drawRoundRect(10, 10, 100, 100, 20, 20);
}
}
}
Попробуйте поместить его в 'paintComponent' вместо' paint', а может быть, и не попытаться сделать все в конструкторе ... –