如何在java中设置JPanel的大小 [英] how to set the size of JPanel in java
问题描述
我的java代码中有一个JPanel,我想设置它的大小,我使用了JPanel.setSize(500,500);和JPanel.setSize(new Dimension(500,500));但两者都不起作用。请告诉我如何设置JPanel的大小?
I have a JPanel in my java code and I want to set its size, I have used JPanel.setSize(500,500); and JPanel.setSize(new Dimension(500,500)); but both are not working. Please tell how I can set the size of JPanel?
推荐答案
大多数Swing布局管理器都尊重组件的preferredSize而不是它的大小。你可以调用 setPreferredSize(new Dimension(500,500))
,但是这可以在你的代码中稍后重写,并且可能导致GUI不灵活。最好覆盖JPanel的 getPreferredSize()
方法,并返回在所有情况下效果最佳的计算维度。
Most Swing layout managers respect a component's preferredSize and not its size. You could call setPreferredSize(new Dimension(500, 500))
, but this can be overridden later in your code, and can lead to an inflexible GUI. Better to override the JPanel's getPreferredSize()
method and return a calculated Dimension that works best in all situations.
For例如:
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();
}
});
}
}
显示为
Which displays as
这篇关于如何在java中设置JPanel的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!