我做了一个滑动的JFrame“ app”。代码简单而简短,因为这只是测试,然后才将代码放入主项目。

这对我来说几乎是完美的。只有一个问题,当框架滑出时它会放在顶部,但我希望它保留在主窗口后面的背景中。 (上面会有按钮,所以出来后我必须使用这个框架)

这是主窗口的代码:

public class Window {

    private JFrame frame;
    static Slider s;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Window window = new Window();
                    window.frame.setVisible(true);
                    s = new Slider();
                    s.setVisible(false);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public Window() {
        initialize();
    }

    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 501, 414);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton button = new JButton(">>>>");
        frame.getContentPane().add(button, BorderLayout.EAST);

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                float x = frame.getX();
                float y = frame.getY()+55;
                for(int i = (int) x; i < x+500; i++){
                    s.setVisible(true);
                    try {
                        Thread.sleep(1);
                        s.setBounds(i, (int) y, 450, 250);
                    } catch (InterruptedException e1) {
                        e1.printStackTrace();
                    }
                }
            }
        });


    }

}

//And here is the code of the slider:

public class Slider extends JFrame {

    private JPanel contentPane;
    static Slider frame;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    frame = new Slider();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public Slider() {
        setAutoRequestFocus(false);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

    }

}


(主应用程序无法调整大小,这就是为什么高度和宽度恒定的原因。)

任何帮助,将不胜感激。

最佳答案

您还可以使用:

frame.setAlwaysOnTop(true);


如果您不想一直将frame放在首位,只需在滑出后更改它即可。

10-08 18:40