Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使我的JFrame在屏幕顶部?_Java_Swing_Jframe_Awt - Fatal编程技术网

Java 如何使我的JFrame在屏幕顶部?

Java 如何使我的JFrame在屏幕顶部?,java,swing,jframe,awt,Java,Swing,Jframe,Awt,单击按钮后,我将启动Window2。它不会立即发射,但会在3秒后发射。我想要的是在屏幕顶部显示它。如果Window1仍在屏幕上,它可以工作,但如果最小化Window1,它将失败 代码如下: import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.event.Actio

单击按钮后,我将启动Window2。它不会立即发射,但会在3秒后发射。我想要的是在屏幕顶部显示它。如果Window1仍在屏幕上,它可以工作,但如果最小化Window1,它将失败

代码如下:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TopTest {
    public static void main(String[] args) {
        TopTest test = new TopTest();
        test.createUI();
    }

    public void createUI(){
        JFrame frame = new JFrame("Window1");
        JPanel panel = new JPanel();
        JButton button = new JButton("show");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                Window window = new Window();
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                window.createUI();
            }
        });
        panel.add(button);
        frame.add(panel,BorderLayout.CENTER);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    class Window {
        public void createUI(){
            JFrame frame = new JFrame("Window2");
            frame.setExtendedState(Frame.MAXIMIZED_BOTH);
            frame.add(new MainPanel());
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }

        @SuppressWarnings("serial")
        class MainPanel extends JPanel{
            @Override
            public Dimension getPreferredSize() {
                // TODO Auto-generated method stub
                return new Dimension(800,600);
            }

            protected void paintComponent(Graphics g){
                g.setFont(new Font("Arial", Font.BOLD, 50));
                g.drawString("I am Window2", 200, 200);
            }
        }
    }
}

提前感谢您的帮助。

将此行添加到
createGUI
方法中

frame.setAlwaysOnTop(true);

@upma 1<代码>类窗口{应该是
类我的窗口{
(与
java.awt.Window
)2.
JFrame-frame=new-JFrame(“Window2”);
应该是
JDialog-frame=new-JDialog(“Window2”);
(然后始终在top或模态上工作)3.Thread.sleep(3000);应该是摆动计时器(不阻止重新绘制)@mKorbel。你太好了,我会注意你提出的建议。非常感谢。@upma:-)但是你完全忽略了MadProgrammer回答的结果(昨天的问题)在这个posts@mKorbel.你说了吗?是的,他创建渲染文本的方法非常出色。我只想展示一个尽可能简单的演示,这样我就不会在本文中使用它了。:-)