You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JPanel中放置两个并排按钮时第二个按钮显示异常,该如何解决?

问题原因

  • 文本赋值对象错误:代码创建第二个按钮button2后,设置显示文本时错误调用了第一个按钮的setText()方法,执行button.setText("Sort Shapes")会直接覆盖第一个按钮原有文本,button2从未设置过显示内容,因此按钮呈现空白状态,看起来像未正常渲染。
    你遇到的运行效果如下:
    运行效果截图
  • 无效的定位代码:你为JPanel指定了FlowLayout布局管理器,该模式下组件的位置、尺寸会由布局自动计算,手动调用setBounds()设置的坐标、宽高完全不生效,属于冗余代码。

解决方案

FlowLayout布局本身就支持组件水平并排排列,刚好符合你的需求,仅需要修正文本赋值错误即可正常显示,如需自定义按钮尺寸可以配合setPreferredSize()方法使用,修正后的完整代码如下:

import javax.swing.*;
import java.awt.*;

public class ShapeDisplay {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Display Shapes");
        JPanel panel = new JPanel();
        // 可自定义FlowLayout参数:对齐方式、按钮水平间距、垂直间距
        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 10));

        JButton loadBtn = new JButton("Load Shapes");
        // 自定义按钮尺寸,适配布局规则
        loadBtn.setPreferredSize(new Dimension(120, 30));
        panel.add(loadBtn);

        JButton sortBtn = new JButton("Sort Shapes");
        sortBtn.setPreferredSize(new Dimension(120, 30));
        panel.add(sortBtn);

        frame.add(panel);
        frame.setSize(600, 600);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

内容的提问来源于stack exchange,提问作者rohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:09:03