相关疑难解决方法(0)

Swing:在Linux中调整像框架一样的JFrame,例如

我想知道是否有可能以这种方式实现JFrame的大小调整,它已被调整大小,例如linux中的标准窗口.更确切地说:如果用户开始拖动,则只有未来的大小才能预览窗口,而原始内容不会调整大小.一旦用户释放鼠标,Frame就会调整为该大小.在图像中:

(1)调整大小之前的状态

在此输入图像描述

(2)用户开始下垂(在红色圆圈)

在此输入图像描述

(3)用户释放鼠标,框架调整大小

在此输入图像描述

是否有可能在Java Swing中意识到这一点?

编辑:

由于这个程序有一天也应该在较低的Java RE中作为7运行,我尝试将mKorbel建议与translucend Frame的注释中的建议结合起来.结果接近目标,除了

  • 在我停止移动鼠标后,contentPane的内容会调整大小,而不是在释放鼠标时
  • 帧标题立即调整大小,而不仅仅是我停止拖动框架边框.
  • 它仅在从右侧或底部调整大小时才起作用,否则内容随拖动而移动.

我认为第一点可以通过代码和MouseListener的组合来解析,类似于mouseReleased(),然后调整大小.这是代码,随意尝试.对于进一步的建议,我仍然对任何建议感到高兴.

该代码稍微修改了Java Tutorials 中的GradientTranslucentWindowDemo.java.我希望它可以在这里发布,否则请告诉我任何侵犯版权的行为.黑色JPanel应该是应用程序的内容,因为contentPane保持不可见.

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.beans.PropertyChangeListener;

import javax.swing.*;
import static java.awt.GraphicsDevice.WindowTranslucency.*;

public class GroundFrame extends JFrame {

    Timer timer;
    JPanel panel2;

    public GroundFrame() {
        super("GradientTranslucentWindow");

        setBackground(new Color(0,0,0,0));
        setSize(new Dimension(300,200));
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel() {
        panel.setBackground(new Color(0,0,0,0));
        setContentPane(panel);

        setLayout(null);
        panel2 = new JPanel();
        panel2.setBackground(Color.black);
        panel2.setBounds(0,0,getContentPane().getWidth(), getContentPane().getHeight());
        getContentPane().add(panel2);

        addComponentListener(new ComponentListener() {

            @Override
            public void componentShown(ComponentEvent e) …
Run Code Online (Sandbox Code Playgroud)

java swing jframe mouse-listeners componentlistener

7
推荐指数
3
解决办法
2828
查看次数

标签 统计

componentlistener ×1

java ×1

jframe ×1

mouse-listeners ×1

swing ×1