【问题标题】:JFrame code compiles and runs, but does not open windowJFrame 代码编译运行,但不打开窗口
【发布时间】:2014-09-22 00:18:34
【问题描述】:

在这里你会看到我的代码: 我只是想制作一个显示“Hello,Java!”的小窗口。

我目前在 Ubuntu 14.04 上运行。为了更深入地解决我的问题,当我运行程序时会显示带有咖啡杯的图标,就像有一个窗口一样,但没有附加窗口,如果单击,则不会弹出窗口。

任何帮助将不胜感激!

public class HelloJava1 extends javax.swing.JComponent
{
    public static void main(String[] args)
    {
        javax.swing.JFrame f = new javax.swing.JFrame("HelloJava1");
        f.setSize(300, 300);
        f.getContentPane().add(new HelloJava1());
        f.setVisible(true);
    }   

    public void paintComponent(java.awt.Graphics g)
    {
        g.drawString("Hello, Java!", 125, 95);
    }
}

另外,我正在使用 javac HelloJava1.java 通过命令行编译并使用 java HelloJava1 运行。

我正在通过 gedit 编写代码。

【问题讨论】:

  • 尝试在JFrame上使用setLocationRelativeByPlatform

标签: java swing paintcomponent jcomponent


【解决方案1】:

这段代码应该可以可靠地工作:

import java.awt.*;
import javax.swing.*;

public class HelloJava1 extends JComponent {

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                JFrame f = new JFrame("HelloJava1");
                // f.setSize(300, 300);  better to pack() the frame
                f.getContentPane().add(new HelloJava1());
                // pack should be AFTER components are added..
                f.pack();
                f.setVisible(true);
            }
        };
        // Swing GUIs should be created and updated on the EDT
        SwingUtilities.invokeLater(r);
    }    

    @Override  // good practice..
    public void paintComponent(java.awt.Graphics g) {
        // always call super method 1st!
        super.paintComponent(g);
        g.drawString("Hello, Java!", 125, 95);
    }

    // instead of setting the size of components, it is 
    // better to override the preferred size.
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(300,300);
    }
}

【讨论】:

  • 仍然没有骰子。窗口不显示。也许我必须启用/禁用一些操作系统配置?
  • 注:您的原始代码在这里工作,上面的代码只是使用最佳实践做同样的事情。我认为您的 Java 设置有问题。
  • 这就是我的想法。我只是不知道出了什么问题。哈哈!它编译并运行,只是没有窗口。
猜你喜欢
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多