如何在java中设置JPanel的大小 [英] how to set the size of JPanel in java

查看:1503
本文介绍了如何在java中设置JPanel的大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆