- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 minecraft
插件中制作 UI。一切正常,除了我有一个 JPanel
并且它没有填充整个 JFrame
。所以我想要的是 JPanel
填充整个 JFrame
即使我们重新缩放窗口。
JPanel
使用布局管理器 (FlowLayout
)。JFrame
的布局管理器,但它没有解决我的问题,因为它没有调整 JPanel
的大小。我尝试设置大小JPanel
的大小调整为 JFrame
的大小,但是当调整大小时,它不会随之缩放。那么,我该怎么做呢?
我的插件为每个玩家创建一个按钮,当我单击该按钮时,它会踢玩家。
我的代码(我不能真正发布更少的内容,因为我不知道我需要在哪里更改某些内容):
public static JFrame f;
public static JTextField jtf;
public static JPanel jp;
public static void creategui()
{
System.out.println("GUI created.");
f = new JFrame("Players");
jp = new JPanel();
jp.setLayout(new FlowLayout(FlowLayout.LEFT));
jp.setBackground(Color.GRAY);
jtf = new JTextField("Reason");
jtf.setPreferredSize(new Dimension(200,20));
jtf.setToolTipText("Write the reason here.");
jp.setSize(new Dimension(200,200));
f.setLayout(null);
f.setSize(500,500);
f.setVisible(true);
jp.add(jtf);f.add(jp, BorderLayout.CENTER);
for (final Player p : Bukkit.getOnlinePlayers())
{
System.out.println("Looping.");
final JButton b = new JButton();
b.setName(p.getName());
b.setText(p.getName());
b.setToolTipText("Kick " + b.getText());
b.setBackground(Color.GREEN);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!b.getBackground().equals(Color.RED))
{
Bukkit.getScheduler().runTask(main, new Runnable() {
public void run() {
Bukkit.getPlayer(b.getText()).kickPlayer(jtf.getText());
b.setBackground(Color.RED);
}
});
}
}
});
jp.add(b);
System.out.println("Button added.");
}
f.add(jp, BorderLayout.CENTER);
}
最佳答案
问题应包含 mcve重现问题,以便我们可以测试它。
它可能看起来像这样:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.util.Arrays;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Mcve {
private static List<String> players = Arrays.asList(new String[]{"Player A", "Player B"});
public static void main(String[] args) {
creategui();
}
public static void creategui()
{
JPanel jp = new JPanel();
jp.setBackground(Color.GRAY);
JTextField jtf = new JTextField("Reason");
jtf.setPreferredSize(new Dimension(200,20));
jtf.setToolTipText("Write the reason here.");
jp.setSize(new Dimension(200,200));
jp.add(jtf);
for (final String p : players)
{
final JButton b = new JButton();
b.setText(p);
b.setBackground(Color.GREEN);
b.addActionListener(e -> {
if (!b.getBackground().equals(Color.RED))
{
b.setBackground(Color.RED);
}
});
jp.add(b);
}
JFrame f = new JFrame("Players");
f.setLayout(null);
f.setSize(500,500);
f.add(jp, BorderLayout.CENTER);
f.setVisible(true);
}
}
要使 JPanel
填充整个框架,只需删除这一行:
f.setLayout(null);
并让默认的BorderLayout
管理器完成其工作。
这是带有一些附加注释的修改版本:
public class Mcve {
private static List<String> players = Arrays.asList(new String[]{"Player A", "Player B"});
public static void main(String[] args) {
creategui();
}
public static void creategui()
{
JPanel jp = new JPanel();
jp.setBackground(Color.GRAY);
JTextField jtf = new JTextField("Reason");
jtf.setPreferredSize(new Dimension(200,20));
jtf.setToolTipText("Write the reason here.");
jp.setPreferredSize(new Dimension(250,200)); // set preferred size rather than size
jp.add(jtf);
for (final String p : players)
{
final JButton b = new JButton();
b.setText(p);
b.setBackground(Color.GREEN);
b.addActionListener(e -> {
if (!b.getBackground().equals(Color.RED))
{
b.setBackground(Color.RED);
}
});
jp.add(b);
}
JFrame f = new JFrame("Players");
//f.setLayout(null); null layouts are bad practice
//f.setSize(500,500); let layout managers set the sizes
f.add(jp, BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}
关于java - 如何让JPanel填满整个JFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56699238/
我正在运行 Play! 2.3 使用 Akka 的多线程应用程序。每个线程访问 MySQL 数据库并运行一些计算。每次我运行一组这样的任务时,应用程序的内存占用量都会增加,这主要是由于 JDBC4Pr
我是 JavaScript 新手,正在尝试实现选择排序来亲自接触数组(注意:我知道有一个内置的排序函数)。不过,我遇到了一些奇怪的行为。 这是我的代码: function selectionSort(
我正在使用 unsemantic grid创建我的布局。好吧,我有一个容器,其中有一个标签和一个输入文本。标签的宽度为 20% 然后 margin-rightof 1em 然后我想让容器中的其余空间由
看看这张取自 morsmachine.dk/go-scheduler 的著名图片 灰名单是 P 的本地运行队列。如果此队列变空,它们将被全局运行队列中的 go routines 填充。 问题是,谁来填
(帖子创建于 2016 年 10 月 5 日) 我注意到每次运行图像并删除它时,我的系统都不会恢复到原来的可用空间量。 我应用于容器的生命周期是: > docker build ... > docke
我有一个应用程序,它在启动时运行两个或三个完整的 GC。有很多堆空间,不需要运行任何 GC(minor 或 full)。然而,在 gc 日志中,我可以看到 permgen 被填满,然后立即运行完整
我正在尝试制作可视化 VStack 属性的 VStack 示例应用 但是我的 VStack 无法填满屏幕的宽度 我在互联网上尝试了很多解决方案(frame modifier、HStack with S
[已解决] 所以我在页面顶部有一个高度恒定的 div,我希望在它下面有一个 iFrame 来填充页面的其余部分。 Google Images 和 LinkedIn 做的事情非常相似 参见:http:/
我正在尝试使我的标题框与我的图像大小相同,同时又不失去 flex-slider 的响应能力,有什么建议吗? http://jsfiddle.net/bmBnF/10/ 疯狂的K 最佳答案 我通过将其设
我有一个元素是 的兄弟元素动态填充 hello 我想要 固定在屏幕底部直到动态 s 要求将其向下推到 View 下方。 我尝试了以下但无法获得我想要的结果。 该元素位
我是一名优秀的程序员,十分优秀!