gpt4 book ai didi

java - 全屏上的 Swing 布局边框边距

转载 作者:行者123 更新时间:2023-11-30 02:51:41 24 4
gpt4 key购买 nike

我有一个 Java Swing 应用程序,其中 JFrame 使用 BorderLayout,里面有一个使用 CardLayout 的 JPanel。我正在展示 3 张不同的卡片。如果我手动设置 JFrame 的大小,那么内容就会按照我想要的方式显示。带图像的标签位于东南角。 enter image description here

但是当我将其设置为全屏时,有太多余量: enter image description here

这是我将其设置为全屏的代码:

Frame[] frames = Frame.getFrames();
JFrame frame = (JFrame) frames[0];
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
//frame.getContentPane().setPreferredSize( Toolkit.getDefaultToolkit().getScreenSize());
frame.setUndecorated(true);
//frame.setSize(600,500);
frame.setVisible(true);
frame.setLayout(new BorderLayout());

卡片是使用 Netbeans GUI 构建器构建的,布局设置为“自由设计”。

应用程序将始终处于全屏状态,我希望带有图像的标签位于东南角,就像它在调整大小的窗口上一样(图像示例 1)。我需要为此更改布局还是其他什么?

最佳答案

请注意,这些 UI 的整个 UI 周围有一个小边框。要删除它,请注释掉以下行:

ui.setBorder(new EmptyBorder(4,4,4,4));

enter image description here enter image description here

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class ImageInSouthEast {

private JComponent ui = null;

ImageInSouthEast() {
initUI();
}

public void initUI() {
if (ui!=null) return;

ui = new JPanel(new GridBagLayout());
ui.setBorder(new EmptyBorder(4,4,4,4));

GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.gridwidth = 2;
gbc.weighty = .5;
gbc.weightx = .5;
gbc.gridx = 0;
gbc.gridy = 0;

// first add the labels
for (int ii=1; ii<5; ii++) {
gbc.gridy = ii;
if (ii==4) {
gbc.gridwidth = 1;
}
JLabel l = new JLabel("Label " + ii);
l.setFont(l.getFont().deriveFont(50f));
ui.add(l, gbc);
}

// now for the image!
BufferedImage bi = new BufferedImage(100, 50, BufferedImage.TYPE_INT_RGB);
JLabel l = new JLabel(new ImageIcon(bi));
gbc.anchor = GridBagConstraints.LAST_LINE_END;
gbc.gridx = 2;
gbc.weighty = 0;
ui.add(l, gbc);
}

public JComponent getUI() {
return ui;
}

public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception useDefault) {
}
ImageInSouthEast o = new ImageInSouthEast();

JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);

f.setContentPane(o.getUI());
f.pack();
f.setMinimumSize(f.getSize());

f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}

关于java - 全屏上的 Swing 布局边框边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38453825/

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