gpt4 book ai didi

java - java中如何设置JPanel的大小

转载 作者:行者123 更新时间:2023-12-01 08:01:08 26 4
gpt4 key购买 nike

我的java代码中有一个JPanel,我想设置它的大小,我使用了JPanel.setSize(500,500);和 JPanel.setSize(new Dimension(500,500));但两者都不起作用。请告诉我如何设置 JPanel 的大小?

最佳答案

大多数 Swing 布局管理器尊重组件的首选大小而不是其大小。您可以调用 setPreferredSize(new Dimension(500, 500)),但这可能会在稍后的代码中被覆盖,并可能导致 GUI 不灵活。最好重写 JPanel 的 getPreferredSize() 方法并返回在所有情况下都效果最佳的计算维度。

例如:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.*;

public class PrefSizePanel extends JPanel {

private static final int PREF_W = 500;
private static final int PREF_H = PREF_W;

public Dimension getPreferredSize() {
// update as per Marco:
if (super.isPreferredSizeSet()) {
return super.getPreferredSize();
}
return new Dimension(PREF_W, PREF_H);
}

// just for fun
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setPaint(new GradientPaint(0, 0, Color.red, 20, 20, Color.blue, true));
g2.fillOval(0, 0, 2 * getWidth(), 2 * getHeight());
}

private static void createAndShowGUI() {
PrefSizePanel paintEg = new PrefSizePanel();

JFrame frame = new JFrame("PrefSizePanel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(paintEg);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
<小时/>

显示为

enter image description here

关于java - java中如何设置JPanel的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25229505/

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