如何在 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 的相关文章

  • NoInitialContextException:heroku 战争部署

    我一直在开发一个 J2EE 项目 并且在其中使用连接池 也通过部署在 heroku 上的数据库进行访问 我使用以下代码来设置 Connection 对象 Context initContext new InitialContext Cont
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • 如何强制jar使用(或jar运行的jvm)utf-8而不是系统的默认编码

    我的Windows默认编码是GBK 而我的Eclipse完全是utf 8编码 因此 在我的 Eclipse 中运行良好的应用程序崩溃了 因为导出为 jar 文件时这些单词变得不可读 我必须在 bat 文件中写入以下行才能运行该应用程序 st
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • Reactive Spring 不支持 HttpServletRequest 作为 REST 端点中的参数?

    我创建了一个 RestController 如下所示 RestController public class GreetingController RequestMapping value greetings method RequestM
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • 您建议使用哪种压缩(GZIP 是最流行的)servlet 过滤器?

    我正在寻找一个用于大容量网络应用程序的 GZIP servlet 过滤器 我不想使用容器特定的选项 要求 能够压缩响应负载 XML Faster 已在大批量应用的生产中得到验证 应适当设置适当内容编码 跨容器移植 可选择解压缩请求 谢谢 我
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 从休眠乐观锁定异常中恢复

    我有一个这样的方法 Transactional propagation Propagation REQUIRES NEW public void doSomeWork Entity entity dao loadEntity do some
  • Eclipse - 安装新的 JRE (Java SE 8 1.8.0)

    我正在尝试安装 Java 8 到目前为止我所做的 安装最新版本的 Eclipse 下载并安装 Java SE 运行时环境 8http www oracle com technetwork java javase downloads jre8
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向

随机推荐

  • 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