рисование на форме с параметром .setUndecorated(true);

116
30 ноября 2020, 08:30

Как рисовать на такой конструкции без заголовка и рамки

  void initFrame(){
    frame = new JFrame();
    frame.setSize(640,800);
    frame.setLocationRelativeTo(null);
    frame.setUndecorated(true);
    frame.addMouseMotionListener(m);
    frame.addMouseListener(m);
    frame.setVisible(true);
    frame.add(new Puzzle());
  }

и после:

public class Puzzle extends JPanel {
  @Override
  public void paintComponent(Graphics g){
    super.paintComponents(g);
    drawG(g);
  }
  private void drawG(Graphics g){
    Graphics2D g2 = (Graphics2D)g;
    int w = getWidth();
    int h = getHeight();
    g2.setPaint(Color.WHITE);
    g2.fillRect(0,0,640,640);
    g2.setPaint(Color.BLUE);
    g2.drawOval(0,0,500,500);
  }
}

но с параметром frame.setUndecorated(true); создаётся пустая форма... (без рисунка) что же делать как заставить рисовать на "безликой" форме?

Answer 1

Проблема в том, что Вы добавляете панель после того как делаете форму видимой:

Вот этот код будет работать:

JFrame frame = new JFrame();
frame.setSize(640,800);
frame.setLocationRelativeTo(null);
frame.setUndecorated(true);
frame.add(new Puzzle());
frame.setVisible(true);
READ ALSO
Альтернатива генераторов списков из python в java

Альтернатива генераторов списков из python в java

Есть ли в Java аналоги конструкциям - генераторам как в Python, позволяющие быстро создавать/заполнять массив? Например, mass = [x for x in range(10)] Можно...

111
как сделать запись if короче

как сделать запись if короче

Можно сделать так:

112
Почему функция не имеет доступ к переменным внешней функции?

Почему функция не имеет доступ к переменным внешней функции?

В чем проблема? Я думал если fetchValue не находит переменную у себя, она ищет ее в exportValue, тк

112