Перемещение Undecorated окна - Java

Узнай цену своей работы

Формулировка задачи:

Всем привет мужики. Сделал следущее: У главной формы установил undecorated(true); Это привело к тому что я остался без рамки фрейма --- так и задумывал. Но! Возникла сдедущая беда...... Теперь незнаю как сделать так чтобы окно можно было переносить. Т.е тупо взяться за любую область окна и перенести. Вот так хочу сделать.
И собственно еще такой вопрос. Для этого окна делаю прозрачность через .setOpacity(0.5f); B вместе с фреймом становятся прозрачным все объекты на этой форме... как исправить такую беду?

Решение задачи: «Перемещение Undecorated окна»

textual
Листинг программы
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
 
public class Test extends JFrame {
 
    private static final long serialVersionUID = 1802199483736051124L;
 
    public Test() throws IOException {
        setLayout(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(280, 10, 1024, 790);
        setResizable(false);
        setUndecorated(true);
        
        setBackground(new Color(0, 0, 0, 0));
        setContentPane(new JLabel() {
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                Graphics2D g2d = (Graphics2D) g.create();
                g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.DST_OUT, 1));
                g2d.setColor(getBackground());
                g2d.fill(getBounds());
                g2d.dispose();
            }
        });
    }
    
    public static void main(String[] args) throws IOException {
        Test frame = new Test();
        frame.setVisible(true);
        JLabel label = new JLabel(new ImageIcon(ImageIO.read(new File("D:/JavaWork/JPM/src/Graphics/icon.png"))));
        label.setBounds(200, 200, 48, 48);
        label.setOpaque(false);
        frame.add(label);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5