我无法将.setBounds应用于JLabel。它适用于我之前定义的JLabel,但完全忽略了我对边界的第二个定义。我把它的宽度和高度弄得有点混乱,看它是否甚至影响了JLabel,而且它不是。另外,我注意到在撤销我的两个JLabel的添加时,"问候"标签不再出现。继承我的代码,任何帮助表示赞赏:^)
import java.awt.Color;
import java.awt.Font;
import javax.swing.*;
public class Fashion {
static JFrame f = new JFrame("Game Title");
static Font h1 = new Font("courier", Font.PLAIN, 30);
static Font h2 = new Font("courier", Font.PLAIN, 17);
public static void main(String[] args) {
f.setSize(1400, 900);
f.setResizable(false);
f.getContentPane().setBackground(Color.WHITE);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel title = new JLabel("Welcome!");
title.setFont(h1);
JLabel greet = new JLabel("Lets get started.");
greet.setFont(h2);
title.setBounds(225,1,1000,100);
greet.setBounds(350,200,1,1);
f.add(title);
f.add(greet);
f.setVisible(true);
}
}
(忽略非常丑陋的界限/位置,它们奇怪的具体,但它是我的教授想要的:/)
答案 0 :(得分:1)
我无法将.setBounds应用于JLabel。它适用于我之前定义的JLabel,但完全忽略了我对边界的第二个定义。
您的两个setBounds(...)语句都会被忽略。
Swing使用布局管理器来设置组件的大小和位置。即使您尝试设置边界,布局管理器也会根据布局管理器的规则覆盖大小/位置值。
此外,我注意到在撤消添加两个JLabel时,“greet”标签不再出现
这是因为您要将两个组件添加到CENTER
的{{1}}(这是框架内容窗格的默认布局管理器)。只能显示一个组件,因此只能添加最后一个组件。
您的问题的解决方案是学习正确使用布局管理器。阅读Layout Manager上Swing教程中的部分,了解更多信息和示例,以帮助您入门。
默认布局管理器是FlowLayout