当前位置: 首页 > 知识库问答 >
问题:

JButton没有使用setMaximumSize()调整大小?

宋奇希
2023-03-14

我一直在尝试学习按钮,但它拒绝调整大小。按钮1(下面的代码)只占据了整个屏幕。我看到其他帖子的问题是他们没有使用

setMaximumSize();

但是我正在使用它,它仍然不工作!我还没有制作JPanel。这是我的JFrame:

import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Frame extends JFrame {
private JButton button1;
private JButton button2;

public Frame()
{
    button1 = new JButton("Hello button1");
    button2 = new JButton("Hello button2");
    button2.setMaximumSize(new Dimension(100,100));
    button1.setMaximumSize(new Dimension(100,100));
    add(button2);
    add(button1);

}

}

我的主要课程简单明了:

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Panel extends JPanel{
public static void main(String args [])
 {
    Frame frame = new Frame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.setVisible(true);
  }
 }

共有2个答案

东门令
2023-03-14

我添加了流程布局并将setMaximumSize更改为setPreferredSize。这应该可以解决您的问题。试试这个:

import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Frame extends JFrame {
private JButton button1;
private JButton button2;

public Frame()
{
    button1 = new JButton("Hello button1");
    button2 = new JButton("Hello button2");
    button2.setPreferredSize(new Dimension(100,100));
    button1.setPreferredSize(new Dimension(100,100));
    add(button2);
    add(button1);

    }

}
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Panel extends JPanel{
public static void main(String args [])
 {
    Frame frame = new Frame();
    frame.setLayout(new FlowLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.setVisible(true);
  }
 }
闽高峯
2023-03-14

这是因为框架(' s contentPane)默认有一个< code>BorderLayout。您将按钮添加到< code>BorderLayout。居中,因此布局管理器忽略< code >最小值-、< code >首选-和< code >最大值。

我只是想让它们并排小一点

为此,您可以使用简单的流布局。(如果您希望它们以框架为中心,则使用带有网格包布局的父JPanel

如果您想要自定义宽度

例子:

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Example {

    public Example() {

        JButton button1 = new JButton("Hello button1");
        JButton button2 = new JButton("Hello button2") {
            @Override
            public Dimension getPreferredSize() {
                int width = super.getPreferredSize().width;
                return new Dimension(width, width);
            }
        };;

        JPanel buttonPanel = new JPanel();
        buttonPanel.add(button1);
        buttonPanel.add(button2);

        JPanel contentPanel = new JPanel(new GridBagLayout());
        contentPanel.add(buttonPanel);

        JFrame frame = new JFrame();
        frame.setContentPane(contentPanel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Example();
            }
        });
    }

}
 类似资料:
  • 问题内容: 我正在创建一个包含特定ImageIcon的JButton。主要问题是原始图标的大小比按钮的大小大得多。结果,当显示按钮时,只能看到部分图标。什么是“调整” ImageIcon大小以使其适合JButton的方法? 问题答案: 来自http://www.coderanch.com/t/331731/GUI/java/Resize- ImageIcon

  • 我似乎无法调整这个iframe的大小 为了简单起见,我没有包括几个包装div,因为它们只用于样式。然而,上面的两个外部div位于flexbox的div中,因此它们是水平显示的,而不是占据整个水平空间。我将内容div设置为100%的宽度,第一个div设置为固定宽度。如你所见,iframe也从硬编码的固定宽度/高度开始。还要注意,重置iframe的src在js函数中起作用,而不是宽度和高度。 谢谢你

  • 我有一个cardlayout JPanel,里面是一个JScrollPane,里面是一个springlayout JPanel。springlayout JPanel从上到下动态添加JPanel,但是当JButtons超出JPanel时,JScrollPane无法容纳额外的内容。此外,尽管添加了内容,springlayout JPanel的高度仍然保持为0。将Resizeable属性设置为true

  • 我有一个matplotlib图,嵌入了一个wxpython框架中,带有一些尺寸标注器。在我加入一个传奇之前,一切都很好,但随后施胶器似乎没有与传奇一起工作。 即使通过在拐角处拖动来调整窗口的大小,主图形也会改变大小,但只会显示图例的边缘。 也就是说,请注意,图例在wxFrame中不可见。 编辑: 对于对我有用的解决方案,我希望它在程序自动绘制图形时看起来很好,这样调整参数可以在程序中硬编码,或者,

  • 问题内容: 我在JFrame的底部中间保留了一个JButton。现在,每当我调整窗口大小时,都应根据新调整大小的窗口重新定位JButton(在新的中心)。谁能告诉我如何做到这一点。提前致谢。 问题答案: Swing中的组件根据框架的布局管理器进行渲染。默认的布局管理器是BorderLayout,它将框架分为五个逻辑部分:北(上),南(下),东(右),西(左)和中心(介于两者之间的所有内容)。默认情

  • 问题内容: 我有一个快速的问题,我不太确定要进行设置。我在其他地方看到过示例,但没有什么比我的情况更具体。我想使用PHP调整图像的大小,以使图像易于阅​​读,而不仅仅是像使用HTML那样随意拉伸。如果它们的宽度不是250像素,也不是160像素,那么如何调整图片的大小,使其成比例但适合该空间? 谢谢! 问题答案: 好的,下面是我在商店中使用的Image对象。保持规模-需要GD 我在请求时调整图像的大