gpt4 book ai didi

java - 为什么我的标签没有显示? ( java )

转载 作者:行者123 更新时间:2023-12-01 09:50:13 25 4
gpt4 key购买 nike

我正在尝试做一些东西,但我的标签“金钱”没有出现,我不知道为什么。我已经尝试修复它有一段时间了。这是我的代码:

     public class main {
static int amountOM = 200;
static JFrame jf = new JFrame("Game");
static JPanel jp = new JPanel();
static JPanel jp2 = new JPanel();
static JButton exit = new JButton("Exit");
static JLabel money = new JLabel("$ "+amountOM);


public static void main(String[] args){
start();
}

public static void start() {


jf.setLayout(null);
jf.pack();

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(500, 500);


jf.setLocationRelativeTo(null);
jf.setResizable(false);

jp.setLocation(0, 0);
jp.setSize(400, 500);

jp2.setLocation(400, 0);
jp2.setSize(100, 500);

exit.setLocation(405, 10);
exit.setSize(85,50);

money.setLocation(405, 200);
money.setSize(100,50);

jp2.setBackground(Color.gray);
money.setBackground(Color.black);

jf.add(jp);
jf.add(jp2);
jf.add(exit);
jf.add(money);

jf.setVisible(true);

}
}

如果您知道问题所在,请告诉我。谢谢。

(它一直告诉我,我的帖子主要是代码,请添加更多详细信息,所以我在此处添加此文本)

最佳答案

您正在用 JPanel 覆盖您的 JLabel,确切地说是 jp2。不过,解决方案是不要使用绝对定位和空布局,因为就像您所做的那样,很容易搬起石头砸自己的脚。正如此类问题的所有类似答案都会告诉您:学习和使用布局管理器。

虽然 null 布局和 setBounds() 对于 Swing 新手来说似乎是创建复杂 GUI 的最简单、最好的方法,但您创建的 Swing GUI 越多,使用它们时遇到的困难就越严重。当 GUI 调整大小时,它们不会调整组件的大小,它们是增强或维护的皇家女巫,放置在滚动 Pane 中时它们完全失败,在所有平台或与原始分辨率不同的屏幕分辨率上查看时,它们看起来非常糟糕.

您可以在这里找到布局管理器教程:Layout Manager Tutorial ,您可以在此处找到 Swing 教程和其他 Swing 资源的链接:Swing Info .

例如:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.*;

public class Game2 extends JPanel {

private static final int BOX_W = 400;
private static final int BOX_H = BOX_W;
private static final Color SIDE_BG = Color.GRAY;
private JLabel moneyLabel = new JLabel("$20.00");

public Game2() {
JButton exitButton = new JButton("Exit");
JPanel exitBtnPanel = new JPanel();
exitBtnPanel.add(exitButton);
exitBtnPanel.setOpaque(false);
int eb = 2;
exitBtnPanel.setBorder(BorderFactory.createEmptyBorder(eb, eb, eb, eb));

JPanel moneyPanel = new JPanel();
moneyPanel.add(moneyLabel);
moneyPanel.setOpaque(false);

JPanel sidePanel = new JPanel();
sidePanel.setBackground(SIDE_BG);
sidePanel.setLayout(new BoxLayout(sidePanel, BoxLayout.PAGE_AXIS));
sidePanel.add(exitBtnPanel);
sidePanel.add(moneyPanel);

setLayout(new BorderLayout());
add(Box.createRigidArea(new Dimension(BOX_W, BOX_H)));
add(sidePanel, BorderLayout.LINE_END);
}

private static void createAndShowGui() {
Game2 mainPanel = new Game2();

JFrame frame = new JFrame("Game2");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGui());
}
}

关于java - 为什么我的标签没有显示? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37642415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com