Java 为什么我的JButton没有出现在不同的操作系统上

Java 为什么我的JButton没有出现在不同的操作系统上,java,swing,jbutton,Java,Swing,Jbutton,我正试图通过以下教程,用Java(带有GUI)制作一个简单的文本冒险游戏: 这是我迄今为止的代码(供参考): 然而,我在尝试制作Jbutton时遇到了一些问题。我有一个MacBook air,当我运行程序时,我的按钮甚至没有出现。我希望我的按钮看起来是黑色的,文本是白色的,就像在教程视频中一样(timestep-22:10)。我让我的一个有windows的朋友运行代码,它看起来和我想要的一模一样 它在我的Max OS:按钮上运行,但未显示: 这是在我朋友的Windows操作系统上运行的(完全相

我正试图通过以下教程,用Java(带有GUI)制作一个简单的文本冒险游戏:

这是我迄今为止的代码(供参考):

然而,我在尝试制作Jbutton时遇到了一些问题。我有一个MacBook air,当我运行程序时,我的按钮甚至没有出现。我希望我的按钮看起来是黑色的,文本是白色的,就像在教程视频中一样(timestep-22:10)。我让我的一个有windows的朋友运行代码,它看起来和我想要的一模一样

它在我的Max OS:按钮上运行,但未显示:

这是在我朋友的Windows操作系统上运行的(完全相同的代码):按钮显示良好:


所以我的问题是我如何解决这个问题?是否有解决方法?为什么会发生这种情况?

此信息可能与您的案例相关:在我看来,按钮确实出现了,但可能按钮的背景不正确。尝试将前景颜色更改为白色以外的颜色。对Swing不太熟悉,但它似乎会根据操作系统的首选项对外观和感觉做出一些假设。您可能遇到了这个问题,需要通过我上面提供的链接中的信息将其设置为使用跨平台的外观。谢谢大家!我将尝试您的所有建议:)1)
window.setLayout(null)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 提供最小尺寸的ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则提供更大的宽度和高度,以显示应如何使用额外的空间。此信息可能与您的情况有关:在我看来,按钮确实显示,但按钮的背景可能不正确。尝试将前景颜色更改为白色以外的颜色。对Swing不太熟悉,但它似乎会根据操作系统的首选项对外观和感觉做出一些假设。您可能遇到了这个问题,需要通过我上面提供的链接中的信息将其设置为使用跨平台的外观。谢谢大家!我将尝试您的所有建议:)1)
window.setLayout(null)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 以最小尺寸提供ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则提供更大的宽度和高度,以显示应如何使用额外的空间。
import java.awt.Color;

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

public class Game {
    JFrame window;
    JPanel titleNamePanel, startButtonPanel;
    JLabel titleNameLabel, startButtonLabel;
    JButton startButton;
    Font titleFont = new Font("Times New Roman", Font.PLAIN, 90);
    Font normalFont = new Font("Times New Roman", Font.PLAIN, 30);
    
    public static void main(String[] args) {
        new Game();
    }
    
    public Game() {

        window = new JFrame();
        window.setSize(900,600);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.getContentPane().setBackground(Color.black);
        window.setLayout(null);

        titleNamePanel = new JPanel();
        titleNamePanel.setBounds(100,100,700,150);
        titleNamePanel.setBackground(Color.black);
        titleNameLabel = new JLabel("Town of Stratham");
        titleNameLabel.setForeground(Color.white);
        titleNameLabel.setFont(titleFont);
        
        startButtonPanel = new JPanel();
        startButtonPanel.setBounds(400,400,100,50);
        startButtonPanel.setBackground(Color.black);
        
        startButton = new JButton("START");
        startButton.setBackground(Color.black);
        startButton.setForeground(Color.white);
        startButton.setFont(normalFont);
        
        titleNamePanel.add(titleNameLabel);
        startButtonPanel.add(startButton);
        
        window.add(titleNamePanel);
        window.add(startButtonPanel);
        
        window.setVisible(true);
        
    }

}