Swing 问答

零基础小白自学java-问答系统项目实现-javase swing版本(二) 标题 更多资料请关注微信公众号 《java微课程》 阅读详情
  1. 我在哪里可以找到适合于初学者的信息?

   可以参考 Java 指南的 Swing 页面: http://java.sun.com/docs/books/tutorial/uiswing/

  1. 当我进入一个单元格时,它为什么不能获得焦点?

   当单击单元格时,它就获得了焦点;但当移动光标到单元格时,它并不能获得焦点。在J2SE 1.4中新增了一个名为        surrendersFocusOnKeystroke的属性来解决这个问题,并且维持向后兼容。

   相关信息可参考: http://java.sun.com/j2se/1.4/docs/guide/swing/SwingChanges.html#JTable

  1. 我怎样设置单元格行、列的颜色?

   每个单元格都使用 DefaultTableCellRenderer 构建, 通过该类的子类你可以作特定的修改。

   下面的代码演示了怎样实现。它有如此多的可扩充性,以致于 MyCellRenderer 可以包括设置行、列、边框以及文本设置等信息。

   import javax.swing.*;
   import javax.swing.table.*;
   import java.awt.Component;
   import java.awt.Color;

   class TableTest extends JFrame {

     TableTest() {

     final MyCellRenderer mcr = new MyCellRenderer();

     JTable myTable = new JTable(new MyTableModel()) {
      public TableCellRenderer getCellRenderer(int row, int column) {
         return mcr;
       }
     };

      getContentPane().add(new JScrollPane(myTable));
      setSize(640, 480);
      show();
     }

     public static void main(String args[]) {

      new TableTest();
     }
   }

   class MyTableModel extends AbstractTableModel {

     String[] columnNames = {"Name", "Age", "Sex"};
     String[][] columnData = { {"Bob", "23" , "M"}, {"Claire", "99", "F"}, {"Spot", "7", "F"}, {"Phil", "69", "M"}, };

     public Object getValueAt(int row, int col) {return columnData[row][col];}
     public String getColumnName(int col) { return columnNames[col];}
     public int getColumnCount() { return columnNames.length;}
     public int getRowCount() { return columnData.length; }
    }

    class MyCellRenderer extends DefaultTableCellRenderer {

     public Component getTableCellRendererComponent
 (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

      // 获取默认的设置
      Component cell = super.getTableCellRendererComponent ( table, value,isSelected, hasFocus, row, column);

      if (row % 2 == 0) cell.setBackground(Color.blue);
      else cell.setBackground(Color.gray);

      if (column % 2 == 0) cell.setBackground(Color.green);

      return cell;
     }
   }

  1. 在表中我怎样创建一行表头列?

      请查看文件:[ RowHeaderExample.java]

   该解决方案用来创建一个位于JScrollPane行头的组件。该组件将JList添加到行头。

   JList 有:
   - ListModel; 定义列表数据
 
   - RowHeaderRenderer; 定义每个单元格的感观

  1. 我应该选择哪种表格模式?

   表格模型层次提供了:
 
   javax.swing.table.TableModel (接口)
    javax.swing.table.AbstractTableModel (实现TableModel的类)
    javax.swing.table.DefaultTableModel (继承自AbstractTableModel的类)

   javax.swing.table.TableModel

   该接口提供了: Listener 注册, 单元值存取, 列命名, 列存取及创建表模型基础等功能。

   使用实现 TableModel 接口的主要优势是方法的定义可以被定制以及内部数据描述可被扩充 ,实现可变的应用。

   javax.swing.table.AbstractTableModel

   AbstractTableModel 是一种使用表格形数据的简单方法,只需简单的通过重载三个方法 getValueAt, getColumnCount 及 getRowCount 即可。

   AbstractTable 模型也提供了事件处理,如 fireTableDataChanged, fireRowsUpdated 等等...

   AbstractTableModel 构建于 TableModel 之上, 其数据的内部描述可以是静态的(可节省存储空间) 或动态的,这取决于具体的应用。

   通过使用缓冲机制 getValueAt 方法取得具体的内容, 可以使显示和滚动方面的性能得到极大的提高。

   javax.swing.table.DefaultTableModel

   如果在JTable的构造函数中不指定参数,它将使默认的表格模式。

   DefaultTableModels 内部数据描述是向量体系。如果数据不是表格形式,这倒是个很好的方法。

   虽然设置了数据,但执行如滚动、显示应该和数据缓冲时一样。如果数据量大或已经缓冲(比如数据库),那么已缓冲数据的复制品可能是个不合适的选择。

   使用 DefaultTableModel 的一个建议是注意它的易变性。setValueAt 的实现和对其 行/列 修改包括了插入、添加、删除,以及表格构建后所有易变的数据。

   其它建议是要有一个好的设计。

  1. 怎样禁止用户移动表头或重置列大小?

   要限制列动作,使用 table.getTableHeader().setReorderingAllowed(false);

   要限制列重置大小,使用 table.getTableHeader().setResizingAllowed(false);

   要限制个别列重置大小 table.getColumnModel().getColumn(index).setResizable(false/true);

    注意:这些并不适用于J2SE 1.3 以前的版本。

20、Java数据结构与Swing图形界面开发 本博客主要介绍了Java数据结构与Swing图形界面开发的核心知识。内容涵盖常见的数据结构如位集、栈、向量和哈希表,并结合漫画书类进行实践应用。同时,深入讲解了Swing组件的使用,包括框架、容器、按钮、标签等,以及事件处理和布局管理。通过示例和综合应用,帮助读者掌握Java在数据处理和图形界面开发方面的技能,适合初学者和有一定Java基础的开发者学习参考。 阅读详情

相关推荐

19、Java数据结构与Swing图形界面开发

本博客详细介绍了Java数据结构与Swing图形界面开发的核心内容。包括Java中常用的数据结构如哈希表、向量、栈和位集的使用,泛型的必要性及其在代码安全中的作用,以及Swing组件如JFrame、JButton、JLabel和布局管理器的使用方法。同时,还通过多个代码示例展示了如何创建图形用户界面及处理用户交互事件,适合Java开发者学习和参考。

a1b2c的博客 128

表格(单元格放置组件)

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="ProgId" content="Word.Document"> <meta name="Generator" content="Microsoft Word 12&quo

zeyuphoenix的专栏 315

22、Java Swing 界面构建与布局管理全解析

本文全面解析了Java Swing界面构建与布局管理的核心知识,涵盖Swing组件的添加方法、常见问答、认证练习及多种布局管理器的使用技巧。通过实例代码详细讲解了FlowLayout、GridLayout、BorderLayout、CardLayout和GridBagLayout等布局管理器的应用场景与实现方式,并提供了布局选择建议和性能优化思路,帮助开发者构建美观且高效的Java图形用户界面。

fanta的博客 87

java swing的TableColumn属性设置后失效的原因与解决办法

在java的swing开发中,JTable必然是一个常用的UI组件,而在JTable中常用的操作就是动态增删数据列。不知道在使用JTable动态增删列的时候有没有发现,对TableColumn设置属性后再增加列会导致TableColumn的属性失效,下面就来对这个问题一探究竟。

暴走的怪兽君 1307

基于java swing实现答题系统

主要为大家详细介绍了基于java swing实现答题系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

告别裸机思维:在STM32F407上玩转LwIP,让你的设备轻松接入TCP网络

本文详细介绍了如何在STM32F407微控制器上使用LwIP协议栈实现TCP网络连接,从裸机编程到网络化的架构革命。通过事件驱动模型、内存优化配置和工业级稳定性实现,帮助开发者高效构建稳定TCP连接,适用于物联网设备联网等场景。

weixin_33725515的博客 562

java.lang.IllegalArgumentException: Identifier is null错误怎么解决

java.lang.IllegalArgumentException: Identifier is null at javax.swing.table.DefaultTableColumnModel.getColumnIndex(DefaultTableColumnModel.java:251) at javax.swing.JTable.getColumn(JTable.java:2529) a...

qq_37594514的博客 1762

PCRNet: Point Cloud Registration Network using PointNet Encoding

PCRNet算是在ModelNet40这种object-centric数据集上用deep-learning做配准最好入手的一篇文章了,整体架构涉及简洁明了,一句话描述就是简单粗暴,话不多说,直接上网络架构图: Work Flow: 首先对输入source (N×3N \times 3N×3)与template (M×3M \times 3M×3)进行PointNet操作,即MLP + max-pooling后,分别得到描述各自点云的维度为1024的global feature vector:Φ(PS).

dloading7的博客 1646

【java】从一个bug中学习swing中多线程如何更新UI

1. 遇到的问题 今天在做项目的时候遇到一个问题,就是一个无法定位错误的问题:Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2,输出的错误信息并没有对应到我编写的代码部分,也就是说我写的代码没有问题,是swing内部的问题?问题如下: Excep...

XYZ 2557

企业和个人 AI 编程工具怎么选?2025 年 12 款主流工具(Claude/Cursor 等)核心能力 + 收费对比

2025 年最火的 12 款 AI 编程工具,像 Claude、Cursor 这些热门款,我把它们的核心能力、收费标准全扒得明明白白,看完这篇你不用再瞎琢磨,直接就能挑到对的!再说说 Cursor,美国 Cursor Labs 做的,还拿过红杉资本投资,2022 年推出后,2024 年收入直接涨了 6400%,势头很猛。总之,不管你是企业技术管理者、程序员,还是刚入门的 AI 小白,按自己的需求(语言、合规、预算)挑,保准能找到最适合的 AI 编程工具!最后给大家划重点,不同需求直接对号入座:?

hundred98的博客 2800

高通平台 Android T 蓝牙技术全解析:A2DP 与 AVRCP 核心代码路径与交互流程

A2DP 接收端 - 连接流程(AVDTP 打开)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 288

[导入]Swing 问答

Swing 问答 文章来源:http://blog.youkuaiyun.com/nxyc_twz/archive/2004/06/26/27395.aspx 转载于:https://www.cnblogs.com/jambol/archive/2007/11/07/951777.html

weixin_30929295的博客 93

2024年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

他尝试编写了如下程序,请你完善划线处的代码,计算出在h点s分放学时,三个时针分别经过3点位置的次数,用一个元组表示各指针经过3点位置的次数 (时针次数,分针次数,秒针次数) ,并输出。所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。匿名函数,冒号之前表示的是这个函数的参数,冒号之后表示返回值,可以使用默认值,使用时需要将它赋值给一个变量,设置默认值不是必须,如无传入实参则使用默认值,如有传入实参则使用实参。

人生就是一个不断学习的过程 370

牛客java面试问答59-73【Swing】

59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

yubaby 237

高压控制单元与接触器 —— BMS电池的“高压大门”

高压接触器在BMS电池管理系统中扮演着“高压大门”的角色,负责控制电池包与整车高压母线的连接与隔离。接触器的工作原理基于线圈产生的磁力吸合接点,通过主触点接通高压电流路径,辅助触点检测状态,灭弧结构保护接点。预充电路的设计是为了避免直接连接大电容时产生的浪涌电流冲击,通过预充电阻逐步充电,确保系统安全上电。接触器控制策略包括顺序控制、辅助触点检测、温度监控、故障断电和背靠背MOS辅助控制,以确保系统的高效和安全运行。工程师在选择接触器型号、控制线圈、检测状态、软件冗余控制和预充失败保护等方面提供了具体建议。

weixin_43199439的博客 812

YOLOv8车辆碰撞识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置+目标检测)

随着我国汽车保有量的持续攀升,道路交通事故数量居高不下,车辆碰撞损伤的快速、精准评估已成为交通安全管理、保险理赔定损以及汽车后市场服务中的关键环节。传统的人工目视查验方法高度依赖评估人员的专业经验,不仅主观性强、效率低下,而且在复杂光照、多角度遮挡等真实场景下难以保证评估的一致性和可复现性。计算机视觉与深度学习技术的迅猛发展,为目标检测任务提供了强有力的技术支撑,使得基于视觉的车辆损伤自动化识别成为可能。

斌擎科技 128

基于swing的在线考试系统java jsp线上试卷问答mysql源代码

基于swing的在线考试系统java jsp线上试卷问答mysql源代码

wanglindda的博客 285

王者荣耀AI绝悟如何选英雄?

王者荣耀AI绝悟如何选英雄? 【抢射手?抢中单位?「绝悟」在打王者荣耀时是如何选英雄的?】 腾讯 AI Lab 开发的 AI 智能体「绝悟」已让王者峡谷不再只是人类召唤师的竞技场,而且这个 AI 战队在上月底进化成了「完全体」。在一局完整的比赛中,英雄选择阶段是至关重要的(比如五射手或五法师阵容会有官方劝退)。 近日,腾讯 AI Lab 和上海交通大学发布的一篇论文介绍了绝悟的英雄选择策略:Ju...

不断学习,不断进步,提高自己 1万+

java提示框

一、只有一个确定按钮1.标题不能自定义,内容可自定义,图标为感叹号,给人一种提示的感觉 如图: 代码如下:JOptionPane.showMessageDialog(null,"提示");2.标题内容都可自定义,图标为叉号,意为失败 如图: 代码如下:JOptionPane.showMessageDialog(null,"失败!!!", "失败",JOptionPane.ERROR_ME

lxn_1221的博客 3310

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

优快云问答——精选问答Vol.8

《精选问答》挑选优快云问答频道每周最新最热的优质回答,为大家提供可信赖的优质解答,点击查看更多已解决问题 flask做后端去获取前端vue+axios(post)的数据,flask这一块该如何去做 问题描述: flask做后端去获取前端vue+axios(post)的数据,flask这一块该如何去做 解决方案——来自@优快云专家-showbo的回答 简单写了个示例: server.py from flask import Flask, request,render_templ.

AskSpirit的博客 499

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java实现 应激方式式问答助手

从http://bbs.youkuaiyun.com/wap/topics/390833266借鉴的,感觉不错,可以学习。 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; public class MainClass extends JFrame imple

jsh458046505的博客 265

What is the difference between AWT and SWT?

from http://www.jguru.com/faq/view.jsp?EID=507891Answer SWT (Standard Widget Toolkit) is a completely independent Graphical User Interface (GUI) toolkit from IBM. They created it for their new ecl

晏斐的Blog 1662

J2ME对话-采访KVM之父AT

今天在SUN看到一篇采访KVM之父AT的文章,觉得很不错。因此翻译了其中一部分,希望能对网友有所帮助。Antero Taivalsaari是KVM的创始人,他领导了CLDC规范的开发并对J2ME的很多特性都做出了巨大的贡献。Q:KVM是如何形成的?A:在来到SUN工作之前,我在电话设备制造商工作,因此我对移植适宜在手机上运行的JAVA平台十分有兴趣。但是我们遇到的问题是,目前所有嵌入式版本的JAV

mingjava的专栏 6657

12.Swing编程

本章要点 Swing编程基础 Swing组件的继承层次 常见Swing组件的用法 使用JToolBar创建工具条 颜色选择对话框和文件浏览对话框 Swing提供的特殊容器 java的拖放操作 Swing的简化拖放操作 Applet基础知识 开发Applet的基本操作 使用appletviewer浏览Applet 开发进度条 开发滑动条 使用JTree和TreeModel...

qq_21874145的博客 702
上一篇: Hibernate查询解决方案
下一篇: Java性能优化技巧集锦
YuigAzul
博客等级 码龄21年 0粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值