Java 如何使用JPanel设置按钮大小

Java 如何使用JPanel设置按钮大小,java,swing,Java,Swing,我正在JPanel中创建一个按钮和标签。我将这个面板添加到一个JScrollPane中,它最终被添加到一个框架中。这是我的密码 public static void main(String[] args) { final JFrame frame = new JFrame(); JPanel Jpanel =new JPanel(new GridLayout(0, 1)); JScrollPane pane = new JScrollPane(Jpanel,JScrol

我正在JPanel中创建一个按钮和标签。我将这个面板添加到一个JScrollPane中,它最终被添加到一个框架中。这是我的密码

public static void main(String[] args) {

    final JFrame frame = new JFrame();
    JPanel Jpanel =new JPanel(new GridLayout(0, 1));
    JScrollPane pane = new JScrollPane(Jpanel,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

    frame.setSize(500, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    JLabel n = new JLabel("hifadfad");
    n.setBounds(90, 20, 100, 100);
    Jpanel.add(n);

    JButton b = new JButton("hi");
    b.setBounds(10, 40, 60, 60);
    Jpanel.add(b);

    frame.add(pane);
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            frame.setVisible(true);
        }
    });
}
跑步后,我会得到这样的东西

我应该如何设置此按钮的大小

谢谢你的帮助。 欣赏:)

首先看一看,它将提供有关Swing如何处理组件放置和大小调整的更多信息

首先看一看,它将提供有关Swing如何处理组件放置和大小调整的更多信息


这是一个相当复杂的问题,但有几种选择:

  • 使用一个。这将允许您(以有限的方式)指定单个元素的大小和位置
  • 生成与约束匹配的自己的layoutmanager
  • 这并不是一个很好的解决方案:从面板中删除layoutmanager并手动设置所有元素的位置和大小。请注意,这还要求您指定面板的首选大小(在某些情况下甚至是最小大小),因为否则面板将不会显示在滚动窗格中(大小=(0,0))

  • 只是尝试一下单一选项。请注意,提到解决方案3是为了完整性,而不是因为您应该使用它。

    这是一个很难解决的问题,但有几个选项:

  • 使用一个。这将允许您(以有限的方式)指定单个元素的大小和位置
  • 生成与约束匹配的自己的layoutmanager
  • 这并不是一个很好的解决方案:从面板中删除layoutmanager并手动设置所有元素的位置和大小。请注意,这还要求您指定面板的首选大小(在某些情况下甚至是最小大小),因为否则面板将不会显示在滚动窗格中(大小=(0,0))
  • 只是尝试一下单一选项。请注意,提到解决方案3是为了完整性,而不是因为您应该使用它。

    输入您的代码

    Jpanel.setLayout(null);
    
    输入你的密码

    Jpanel.setLayout(null);
    

    可能的重复我仍然不知道如何解决这个问题。我尝试了不同的布局管理器,但没有成功,否则我可能做错了什么。有人能帮我解决吗?Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。使用布局管理器,或者与布局填充和边框一起使用。要使按钮变大,请使用大字体或大图标。我们可以通过调用
    setMargin(Insets)
    在文本或图标周围添加更多空间。我仍然无法找到解决此问题的方法。我尝试了不同的布局管理器,但没有成功,否则我可能做错了什么。有人能帮我解决吗?Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。使用布局管理器,或者与布局填充和边框一起使用。要使按钮变大,请使用大字体或大图标。我们可以通过调用
    setMargin(Insets)
    在文本或图标周围添加更多空间。框架上会有许多按钮和标签,因此我还需要在框架中添加一个滚动条。不,您不需要,您需要在
    JScrollPane
    中包装组件/面板,有关更多详细信息,请参阅。很抱歉,我需要一个滚动窗格将面板包装到其中。这就是我做的对吗?问题是设置按钮的大小。是的,看起来不错,但您需要使用不同的布局管理器,而不是
    GridLayout
    (对于
    Jpanel
    )。你也可以考虑一个<代码> JTab< <代码> >代码> jList,但是我没有完整的上下文来提供一个特定的建议:“框架上会有很多按钮和标签……”提供ASCII艺术或者一个简单的GUI布局,以最小化GUI的布局,如果是可调整的,宽度和高度更大。框架上会有许多按钮和标签,因此我还需要在框架中添加滚动条。不,您不需要,您需要将组件/面板包装在
    JScrollPane
    中,有关更多详细信息,请参阅。很抱歉,我需要一个滚动窗格将面板包装到其中。这就是我做的对吗?问题是设置按钮的大小。是的,看起来不错,但您需要使用不同的布局管理器,而不是
    GridLayout
    (对于
    Jpanel
    )。你也可以考虑一个<代码> JTab< <代码> >代码> jList,但是我没有完整的上下文来提供一个特定的建议:“框架上会有很多按钮和标签……”提供ASCII艺术或者一个简单的GUI布局,以最小化GUI的布局,如果是可调整的,具有更大的宽度和高度。避免使用
    null
    布局,像素完美的布局在现代ui设计中是一种错觉。影响零部件单个尺寸的因素太多,您无法控制。Swing的设计初衷是与布局管理器一起工作,丢弃这些管理器将导致无止境的问题,您将花费越来越多的时间尝试使用
    null
    layouts来纠正这些问题,像素完美的布局在现代ui设计中是一种幻觉。影响零部件单个尺寸的因素太多,您无法控制。Swing的设计初衷是与布局管理器一起工作,丢弃这些布局管理器将导致无止境的问题,您将花费越来越多的时间来纠正这些问题