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

Java Swing如何实现点击JButton后显示JTextArea

实现点击按钮后显示JTextArea并展示大学信息的解决方案

要实现点击按钮后才显示JTextArea的效果,核心逻辑是初始化时隐藏JTextArea,在按钮点击事件中设置对应大学内容后再将其显示并刷新界面,修改后的完整可运行代码如下:

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

public class ToolBar extends JFrame {
    JButton uni1=new JButton("Hasheimte University");
    JButton uni2=new JButton("The University of Jordan");
    JButton uni3=new JButton("German Jordanian University");
    JButton exit=new JButton("Close");
    JToolBar tb = new JToolBar();
    // 文本区外层套滚动面板,内容过多时可滚动查看
    JScrollPane textScrollPane;
    JTextArea text = new JTextArea();

    public ToolBar(){
        setTitle("Jordanian universities");
        setSize(600,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 改用BorderLayout布局,工具栏放顶部、文本区放中间,布局更合理
        setLayout(new BorderLayout());

        // 配置工具栏
        add(tb, BorderLayout.NORTH);
        tb.add(uni1);
        tb.add(uni2);
        tb.add(uni3);
        tb.add(exit);
        tb.setFloatable(false);

        // 初始状态下文本区设置为不可见
        text.setLineWrap(true);
        text.setWrapStyleWord(true);
        textScrollPane = new JScrollPane(text);
        textScrollPane.setVisible(false);
        add(textScrollPane, BorderLayout.CENTER);

        // 哈希姆大学按钮点击事件
        uni1.addActionListener(e ->{
            text.setText("哈希姆大学(Hasheimte University)相关信息:\n成立于1995年,位于约旦扎尔卡省,是约旦知名公立综合大学,下设十余个学院,在医学、工程、人文社科等领域具备较强科研实力。");
            textScrollPane.setVisible(true);
            // 刷新界面保证组件正常渲染
            revalidate();
            repaint();
        });

        // 约旦大学按钮点击事件
        uni2.addActionListener(e ->{
            text.setText("约旦大学(The University of Jordan)相关信息:\n成立于1962年,是约旦历史最悠久、规模最大的公立综合大学,坐落于首都安曼,是约旦高等教育体系的核心机构,学科覆盖全面,在中东地区享有较高学术声誉。");
            textScrollPane.setVisible(true);
            revalidate();
            repaint();
        });

        // 德约旦大学按钮点击事件
        uni3.addActionListener(e ->{
            text.setText("德国约旦大学(German Jordanian University)相关信息:\n成立于2005年,是约旦与德国合作创办的公立大学,采用德国应用技术类高等教育培养模式,侧重实践型人才输出,在工程、信息技术、工商管理等领域优势突出。");
            textScrollPane.setVisible(true);
            revalidate();
            repaint();
        });

        exit.addActionListener(e -> {
            dispose();
        });

        // 所有组件配置完成后再显示窗口,避免组件加载不全的问题
        setVisible(true);
    }

    public static void main(String[] args) {
        new ToolBar();
    }
}

核心修改说明

  • 移除了原代码中冗余的JFrame frame成员变量,当前类本身继承了JFrame,无需额外创建窗口实例
  • 给JTextArea外层套了JScrollPane组件,解决文本内容过多时无法完整查看的问题,初始化阶段将滚动面板设置为不可见
  • 将原FlowLayout布局替换为BorderLayout,工具栏固定在窗口顶部,文本区占满剩余窗口空间,符合常规工具类软件的布局逻辑
  • 每个大学按钮的点击事件中,先给文本区填充对应大学的信息,再将滚动面板设置为可见,最后调用revalidate()和repaint()方法刷新界面,保证文本区正常渲染
  • 将setVisible()方法的调用移到构造方法末尾,避免窗口先显示、后加载组件导致的渲染异常问题

内容的提问来源于stack exchange,提问作者Hussein M Malkawi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:45:02