如何在 JTable 之后添加 JButton

2023-12-03

我有一个 JTable,其中包含一些像这样的 SSCCE 数据:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.*;
import java.awt.Color;
class kanji{
    public static void main(String args[]){ 
        JFrame frame = new JFrame("Kanji");
        JPanel pane = new JPanel();
        JTable table = new JTable();
        pane.setLayout(new BorderLayout());
        JButton agreg = new JButton("Agregar");         
        DefaultTableModel model = new DefaultTableModel(get_data(), get_header());      
        JFrame hk = new JFrame("Historial de Significados");
        Image icon = Toolkit.getDefaultToolkit().getImage("JLPT.jpg");
        ImageIcon ima = new ImageIcon("JLPT.jpg");
        table = new JTable(model){
            @Override
            public boolean isCellEditable(int row, int col){
                switch(col){
                    case 0:
                        return false;
                    case 1:
                        return false;
                    case 2:
                        return true;
                    default:
                        return false;
                }
            }
            @Override
            public Class getColumnClass(int column) {
                switch (column) {
                    case 0:
                        return String.class;
                    case 1:
                        return String.class;
                    case 2:
                        return Boolean.class;
                    default:
                        return Boolean.class;
                }
            }
        };
        DefaultTableCellRenderer r = new DefaultTableCellRenderer() {
            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
                setForeground(Color.blue);
                setHorizontalAlignment(JLabel.CENTER);
                setFont(new Font("Microsoft JhengHei", Font.BOLD, 50));
                return this;
            }
        };
        DefaultTableCellRenderer r2 = new DefaultTableCellRenderer() {
            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
                setHorizontalAlignment(JLabel.LEFT);
                setFont(new Font("Microsoft JhengHei", Font.BOLD, 13));
                return this;
            }
        };
        table.getColumnModel().getColumn(0).setCellRenderer(r);
        table.getColumnModel().getColumn(1).setCellRenderer(r2);
        TableColumn column = null;
        for (int i = 0; i < 3; i++) {
            column = table.getColumnModel().getColumn(i);
            if (i==0) {
                column.setMaxWidth(80);
                column.setMinWidth(80);
            }
            else{
                if(i==1){
                    column.setPreferredWidth(470);
                }
                else{
                    column.setMaxWidth(50);
                    column.setMinWidth(50);
                }
            }
        }
        table.setRowHeight(table.getRowHeight()+70);
        table.setModel(model);
        table.getTableHeader().setReorderingAllowed(false);
        JScrollPane scroll = new JScrollPane(table);
        pane.add(scroll, BorderLayout.CENTER);
        pane.add(agreg, BorderLayout.SOUTH);
        frame.add(pane);
        frame.setTitle("Historial de Significados");
        frame.setSize(1350, 700);
        frame.setIconImage(icon);
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        scroll.setViewportView(table);  
    }
    public static Object [][]get_data(){
        Object data[][] = new Object[][]{
            {"\u4e00", "Uno, 1", true},
            {"\u4e01", "Uno, 1", true},
            {"\u4e02", "Uno, 1", true},
            {"\u4e03", "Uno, 1", true},
            {"\u4e04", "Uno, 1", true},
            {"\u4e05", "Uno, 1", true},
            {"\u4e06", "Uno, 1", true},
            {"\u4e07", "Uno, 1", true},
            {"\u4e08", "Uno, 1", true},
            {"\u4e09", "Uno, 1", true}
        };
        return data;
    }
    public static String []get_header(){
        String header [] = new String[]{"KANJI", "SIGNIFICADO", "Agregar"};
        return header;
    }
}

但我想在创建 JTable 后添加 3 个 JButton,我想要一个不占用所有 JFrame 大小的 JTable,在我的代码中我得到一个 Button,但我希望能够设置按钮边界。

我尝试添加一个 JPanel 并再次尝试使用“setPreferredSize”,其中 JScrollPane 不起作用,我的意思是我没有出现,所以我看不到所有表格内容;我还尝试过“setSize”,但这对我不起作用。

也许我必须制作第二个面板或类似的东西,我希望你能帮助我解决这个问题。

我猜一张图片可以表达超过 1000 个单词,所以:

这就是我得到的、拥有的和我想要拥有的

enter image description here

所以用简单的英语来说,我想知道的是如何渲染表格并在渲染表格后在底部添加按钮(但我不希望按钮具有所有框架宽度,我希望它们远离表格,而不是像我一样在一起)拥有它们并且可以改变它们的大小和位置)。


enter image description here

private void createUI() {
        JFrame frame = new JFrame();

        frame.setLayout(new BorderLayout());

        final JTable table = new JTable(10, 4);

        JPanel btnPnl = new JPanel(new BorderLayout());
        JPanel topBtnPnl = new JPanel(new FlowLayout(FlowLayout.TRAILING));
        JPanel bottombtnPnl = new JPanel(new FlowLayout(FlowLayout.CENTER));

        topBtnPnl.add(new JButton("Select All"));
        bottombtnPnl.add(new JButton("Cancel"));
        bottombtnPnl.add(new JButton("Add Selected"));

        btnPnl.add(topBtnPnl, BorderLayout.NORTH);
        btnPnl.add(bottombtnPnl, BorderLayout.CENTER);

        table.getTableHeader().setReorderingAllowed(false);



        frame.add(table.getTableHeader(), BorderLayout.NORTH);
        frame.add(table, BorderLayout.CENTER);
        frame.add(btnPnl, BorderLayout.SOUTH);

        frame.setTitle("JTable Example.");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JTable 之后添加 JButton 的相关文章

  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其

随机推荐

  • Ember.js:具有动态绑定的 TextField

    我想将 TextField 绑定到由字符串变量指定的属性 请参阅编辑以获得更好的解释 如这个问题 不幸的是 那里给出的答案不再有效 他们在那里使用以下视图 App AutoTextField Ember ContainerView exte
  • 如何从流中删除转义序列

    有没有一种快速的方法来查找 并删除 所有转义序列来自流 字符串 希望以下语法对您有所帮助 string inputString hello world StringBuilder sb new StringBuilder string pa
  • 为 NavigableMap 编写同步线程安全包装器

    java util Collections目前提供以下实用方法来创建synchronized各种集合接口的包装器 synchronizedCollection Collection
  • javascript 中关联 []、{} 和对象之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 数组和对象有什么区别 该项目存在于数组中 但它说数组长度为 0 我对 javascript 中的对象和关联数组有点困惑 我读到了这个 question但这个问题表明两者没有太大区别 我在控制台中写了这
  • git - 当本地被删除但文件存在于远程时​​合并冲突

    我对 git 很陌生 想知道应该如何进行合并 在本地存储库中我删除了 master 分支上的几个文件 但这些文件存在于远程 master 分支中 执行 git merge 后 它会显示已发生的冲突 使用git gui显示本地文件被删除 而远
  • 错误:双端队列迭代器不可取消引用

    我正在尝试创建一个程序 将算术表达式从中缀形式转换为后缀形式 只要我不调用 infixToPostFix 函数 程序就可以正常运行 但是当我尝试运行以下代码时 出现崩溃并出现错误 双端队列迭代器不可取消引用 我找不到任何解引用运算符 所以我
  • 无法在 MacOS 上从 shm_open 写入 fd

    我正在尝试写入然后从使用打开的文件描述符中读取shm open 它在 Linux 上按我的预期工作 但在 macOS 上却不行 特别是 macOS Monterey 12 5 21G72 这是代码 include
  • 如何让printf在STM32F103上工作?

    我是 STM32F103 世界的新手 我有一个STM32F103的演示代码 我正在使用arm none eabi来编译它 我尝试了在谷歌上可以找到的内容 但到目前为止没有任何效果 我已经花了三天时间来解决这个问题 任何人都可以给我一个运行良
  • 如何使用 pyodide 在项目中导入模块而不出现错误?

    每当我在 pyodide 中导入 python 模块时 都会出现此错误 pyodide js 108 Invalid package name or URI 我不确定如何正确导入模块 我已经尝试过文档中提到的这个 pyodide loadP
  • 为什么我们不能对 float 和 double 数据类型使用按位运算符

    我是 c 的新手 在这里我试图以存储在内存中的方式打印存储在 float 和 double 变量中的值 但编译器不允许我在浮点和双精度变量上使用按位运算符 我想知道为什么我们不能使用像 和 这样的按位运算符float 和 double 数据
  • 添加到

    内的每个单词

    我想将 添加到 内的每个单词 该链接应该包含它所包围的单词 该网页有许多不同的 h3 h3 add links h3 h3 to each word h3 结果应该是这样的 h3 a href add add a a href links

  • 如何使用ffmpeg的库将YUV420P图像转换为JPEG?

    我正在尝试转换 YUV420P 图像 AV PIX FMT YUV420P 使用 ffmpeg 转换为 JPEGlibavformat and libavcodec 到目前为止 这是我的代码 AVFormatContext pFormatC
  • 重复多个函数参数

    Typescript 中有没有一种方法可以动态输入默认情况下采用 2 个参数但应该能够重复处理这些参数的函数 should be allowed myFunction paramA paramB myFunction paramA para
  • .NET - 将通用集合转换为数据表

    我正在尝试将通用集合 列表 转换为数据表 我发现以下代码可以帮助我做到这一点 Sorry about indentation public class CollectionHelper private CollectionHelper th
  • 如何在触发器函数中将 NEW.* 传递给 EXECUTE

    我有一个简单的任务是将巨大的 MD5 值插入到表 分区表 中 并创建了一个触发器和一个触发器函数来代替INSERT手术 在函数中我检查了前两个字符NEW md5以确定应插入哪个表 DECLARE tb text BEGIN IF TG OP
  • NoSuchMethodError:Lcom/google/firebase/FirebaseApp 类中没有虚拟方法 zzEq()Z;

    以下是我的应用程序上不断出现的致命错误 我正在尝试使用 Firebase 在我的应用程序上运行聊天信使功能 它正在运行 但此后它一直使应用程序完全崩溃 我对代码进行了一些编辑 希望能解决问题 但没有成功 我一直在 youtube 上关注这个
  • 如何将复数的虚部设置为零?

    我需要检查虚部是否非常小 如果是 则将其设置为零 以便消除一些浮点错误 这些错误会导致在应该为零的情况下产生非常小的非零虚部 我的代码如下 kz2 SQRT n2 2 0 PI eta 2 kxarray p 2 kz1 SQRT n1 2
  • 使用 CSS sprites 在表单元素上定位背景图像

    我正在尝试使用放大镜作为输入元素的背景 放大镜图标是 CSS 精灵的一部分 如下所示 为了定位它 我使用了这些属性 search form input type text background url images icons png no
  • MATLAB:任意数量的元胞数组的组合

    MATLAB 中是否有命令或单行策略可以返回以下组件的所有组合n元胞数组 采取n一次 我想要完成的一个例子 A a1 a2 B b1 b2 b3 C combinations A B C a1 b1 a1 b2 a1 b3 a2 b1 a2
  • 如何在 JTable 之后添加 JButton

    我有一个 JTable 其中包含一些像这样的 SSCCE 数据 import java awt import java awt event import javax swing import java io import javax swi