在java中创建类似Windows任务栏的横幅/工具栏

在java中创建类似Windows任务栏的横幅/工具栏,java,swing,netbeans,Java,Swing,Netbeans,我想用java创建一个桌面应用程序,一个横幅/工具栏(我使用的是swing-in-netbeans),我想让它和windows任务栏一样,这意味着桌面图标将根据横幅位置重新排列 如何做到这一点 感谢您的回复。其中一种方法是使用JWindow或模态和非装饰JDialog import java.awt.BorderLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax

我想用java创建一个桌面应用程序,一个横幅/工具栏(我使用的是swing-in-netbeans),我想让它和windows任务栏一样,这意味着桌面图标将根据横幅位置重新排列

如何做到这一点


感谢您的回复。

其中一种方法是使用
JWindow
或模态和非装饰
JDialog

import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JWindow;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class SlideText_1 {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        final JWindow window = new JWindow();
        final JPanel windowContents = new JPanel();
        JLabel label = new JLabel("A window that is pushed into view..........");
        windowContents.add(label);
        window.add(windowContents);
        window.pack();
        window.setLocationRelativeTo(null);
        final int desiredWidth = window.getWidth();
        window.getContentPane().setLayout(null);
        window.setSize(0, window.getHeight());
        window.setVisible(true);
        Timer timer = new Timer(15, new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                int newWidth = Math.min(window.getWidth() + 1, desiredWidth);
                window.setSize(newWidth, window.getHeight());
                windowContents.setLocation(newWidth - desiredWidth, 0);
                if (newWidth >= desiredWidth) {
                    ((Timer) e.getSource()).stop();
                    window.getContentPane().setLayout(new BorderLayout()); //restore original layout
                    window.validate();
                    window.setVisible(false);
                }
            }
        });
        timer.start();
    }

    private SlideText_1() {
    }
}

沙哈尔代表我问了这个问题。我原以为可以用纯Java实现,但遗憾的是,据我所知,在这种情况下,Java是一条死胡同

您需要使用windows API,为此您需要使用Java本机接口(JNI)


最好的方法是用C或C++创建一个DLL(使用头窗口)并将其导入java代码。

事情是它只在桌面项目上徘徊,我希望桌面项目(图标等)对横幅起反应,不会与它发生冲突。