-
2021-03-14 01:01:51
java swing中在jTable中添加多个复选框的方式如下:
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.*;
public class MyFirstJFrame extends JFrame {
// 作为测试的main方法
public static void main(String[] args) {
new MyFirstJFrame().setVisible(true);
}
/**
* 构造方法
*/
public MyFirstJFrame() {
InitialComponent();
}
/**
* 初始化组件的方法
*/
private void InitialComponent(){
// 设置窗体参数
// 设置布局模式
setLayout(null);
// 设置窗体大小
setSize(480, 360);
// 设置窗体居中(非常规方法)
setLocationRelativeTo(null);
// 关闭窗体退出程序
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
// 初始化面板
panel = new JPanel();
panel.setSize(this.getWidth(), this.getHeight());
panel.setLocation(0,0);
panel.setLayout(null);
// 初始化表格
table = new JTable(new DefaultTableModel(new Object[][]{{"第一行"},{"第二行"},{"第三行"},{"第四行"}}, new String[]{"测试行1","测试行2"}){
/* (non-Javadoc)
* 重写方法,判断表单元格是否可编辑
* 可以通过row和column索引判断某一个单元格是否可编辑
* 此处设为都不可编辑
* @see javax.swing.table.DefaultTableModel#isCellEditable(int, int)
*/
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
});
// 开始向表格中添加复选框(注意:此示例较为简单,缺省很多判断,也没有动态代码支持)
// 通过设置列渲染
// 方法一:直接方式 使用TableColumn的setCellRenderer方法(推荐)
// 此方法可以设置某一列的渲染(即使用某一个组件--即控件来显示单元格数据)
table.getColumnModel().getColumn(1).setCellRenderer(new TableCellRenderer(){
/*(non-Javadoc)
* 此方法用于向方法调用者返回某一单元格的渲染器(即显示数据的组建--或控件)
* 可以为JCheckBox JComboBox JTextArea 等
* @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
*/
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
// 创建用于返回的渲染组件
JCheckBox ck = new JCheckBox();
// 使具有焦点的行对应的复选框选中
ck.setSelected(isSelected);
// 设置单选box.setSelected(hasFocus);
// 使复选框在单元格内居中显示
ck.setHorizontalAlignment((int) 0.5f);
return ck;
}});
// 方法二:先设置列编辑器,然后设置单元格渲染
// 设置列编辑器
// 在以复选框为对象设置列编辑器时,必须保证该列能够被编辑,否则无法更改状态
// (此步骤可以省略,省略时不要忘记将列设为不可编辑)
// table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(new JCheckBox()));
// 设置单元格渲染(这里是设置表格级别的渲染)
/*table.setDefaultRenderer(Object.class, new TableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
// 判断是否为需要渲染的列
if(column == 1){
// 和方法一基本一致
JCheckBox box = new JCheckBox();
box.setSelected(isSelected);
// 设置单选box.setSelected(hasFocus);
box.setHorizontalAlignment((int) CENTER_ALIGNMENT); // 0.5f
return box;
}
// 如果不是需要渲染的列,封装文本域显示数据
return new JTextArea(value.toString());
}});*/
// 在多选是需要按住Ctrl键或者鼠标按住拖过连续的需要选中的行,应该给用户说明
// 第一种方法是被推荐的,因为它具有选中的高亮显示,界面能更加友好
table.setSize(panel.getWidth(),panel.getHeight() - 90);
table.setLocation(0, 0);
btn = new JButton("Test");
btn.setSize(80,40);
btn.setLocation((panel.getWidth()) / 2 - 40, panel.getHeight() - 80);
// 按钮点击时显示当前选中项
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
for(int rowindex : table.getSelectedRows()){
JOptionPane.showMessageDialog(null, rowindex + " " + table.getValueAt(rowindex, 0));
}
}});
panel.add(table);
panel.add(btn);
this.add(panel);
}
// 定义一些必要的组件
private JPanel panel;
private JTable table;
private JButton btn;
}
更多相关内容 -
javaGUI--表格布局
2021-08-29 11:44:00效果 ... import java.awt.*; public class TestGridLayOut... // 表格布局 public static void main(String[] args) { Frame frame = new Frame("GridLayOut"); frame.setVisible(true); // 按钮组件 Button but效果
package cn.usts.edu.lesson01; import java.awt.*; public class TestGridLayOut { // 表格布局 public static void main(String[] args) { Frame frame = new Frame("GridLayOut"); frame.setVisible(true); // 按钮组件 Button button1 = new Button("button1"); Button button2 = new Button("button2"); Button button3 = new Button("button3"); Button button4 = new Button("button4"); Button button5 = new Button("button5"); Button button6 = new Button("button6"); // 设置布局形式为表格布局 frame.setLayout(new GridLayout(2,3)); frame.add(button1); frame.add(button2); frame.add(button3); frame.add(button4); frame.add(button5); frame.add(button6); // 自动调整为合适大小 frame.pack(); } }
-
五种JAVA GUI布局管理的方式
2021-02-28 16:59:101. 流式布局(FlowLayout)定义:通俗地说,流式布局就是根据窗口大小,自动改变窗口内组件的位置。例如:原窗口大小一行可以容纳10个BUTTON,但将窗口缩小后,每行仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就...1. 流式布局(FlowLayout)
定义:
通俗地说,流式布局就是根据窗口大小,自动改变窗口内组件的位置。例如:原窗口大小一行可以容纳10个BUTTON,但将窗口缩小后,每行仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就会自动排列到下一行。
示例:(省略panel的使用)
Hashset
package 布局管理;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Layout { //流式布局
public static void main(String[] args) {
Frame frame = new Frame(); //创建一个窗口
frame.setLayout(new FlowLayout(FlowLayout.LEFT)); //将窗口布局设置为流式布局,并设置向左对齐
Button button1 = new Button("button1"); //创建若干个按钮
Button button2 = new Button("button2");
Button button3 = new Button("button3");
Button button4 = new Button("button4");
Button button5 = new Button("button5");
frame.add(button1); //将按钮添加进窗口中
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button5);
frame.setBounds(200,200,500,500); //设置窗口的位置与大小
frame.setVisible(true); //设置窗口可见性
frame.addWindowListener(new WindowAdapter() { //事件监听:关闭窗口
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
2. 东西南北中布局(BorderLayout)
定义:
东西南北中布局,顾名思义。将窗口分为东西南北中四个“块儿”,也可以称作上下左右中布局,便于理解。
示例:(省略panel的使用)
package 布局管理;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class BorderLayout { //东西南北中布局
public static void main(String[] args) {
Frame frame = new Frame();
frame.setLayout(new java.awt.BorderLayout());
Button east = new Button("East");
east.setBackground(new Color(140, 172, 51));
Button west = new Button("West");
west.setBackground(new Color(140, 172, 51));
Button north = new Button("North");
north.setBackground(new Color(38, 222, 135));
Button south = new Button("South");
south.setBackground(new Color(38, 222, 135));
Button center = new Button("Center");
frame.add(east, java.awt.BorderLayout.EAST);
frame.add(west, java.awt.BorderLayout.WEST);
frame.add(north, java.awt.BorderLayout.NORTH);
frame.add(south, java.awt.BorderLayout.SOUTH);
frame.add(center, java.awt.BorderLayout.CENTER);
frame.setBounds(200,200,500,500);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
3. 表格式布局
定义:
将窗口拆分为若干个表格(拆分为自己需要的表格),再往里添加组件。
示例:
GUI经常使用的“登录”、“注册”界面
package 布局管理;
import javafx.scene.control.PasswordField;
import javafx.scene.layout.Pane;
import sun.security.util.Password;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.nio.charset.Charset;
public class GridLayout {
public static void main(String[] args) {
// System.out.println("file.encoding=" + System.getProperties().getProperty("file.encoding"));
// System.out.println("默认是:"+ Charset.defaultCharset().name());
Frame frame = new Frame("表格布局");
frame.setLayout(new java.awt.GridLayout(4,1)); //设置行列数
Panel panel1 = new Panel();
frame.add(panel1);
Panel panel2 = new Panel();
frame.add(panel2);
Panel panel3 = new Panel();
frame.add(panel3);
Panel panel4 = new Panel();
frame.add(panel4);
Label label = new Label("welcome to *** system");
label.setFont(new Font("宋体", Font.PLAIN, 26));
Label label1 = new Label("Account: ");
TextField textField = new TextField();
textField.setColumns(20);
Label label2 = new Label("Password: ");
TextField textField1 = new TextField(); //AWT没有passwordField
textField1.setColumns(20);
textField1.setEchoChar('*');
Button button = new Button("Login");
panel1.add(label);
panel2.add(label1);
panel2.add(textField);
panel3.add(label2);
panel3.add(textField1);
panel4.add(button);
frame.setBounds(200,200,500,250);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
4. 我不要布局!!!当设置 frame.setLayout(null) ;时,可以使用给panel设置坐标的方式控制布局,更具灵活性!
package AWT;
import javafx.scene.layout.Pane;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class panel {
public static void main(String[] args) {
Frame frame = new Frame(); //new一个窗口出来
Panel panel = new Panel(); //new一个面板
Panel panel1 = new Panel(); //new一个面板
Panel panel2 = new Panel(); //new一个面板
frame.setLayout(null); //设置布局为空
frame.setBounds(200,200,500,500); //设置窗口位置大小
panel.setBounds(20,15,460,50); //设置第一个面板
panel.setBackground(new Color(253, 228,1)); //设置面板颜色
panel1.setBounds(20,70,100,415);
panel1.setBackground(new Color(0, 71, 254));
panel2.setBounds(130,70,350,415);
panel2.setBackground(new Color(1,1,1));
frame.add(panel); //面板加入到窗口中
frame.add(panel1);
frame.add(panel2);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}); {
}
}
}
5. 我都要!!!
为了使界面更加美观,可以使用多种布局的嵌套哦!
以上就是五种JAVA GUI布局管理的方式的详细内容,更多关于JAVA GUI布局的资料请关注脚本之家其它相关文章!
-
Swing布局之表格布局(GridLayout)
2021-02-26 12:49:38表格布局是按照表格的样式来放置按钮,如下:package com.fepc.commons.exports;import java.awt.Dimension;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JDialog;public class ...表格布局是按照表格的样式来放置按钮,如下:
package com.fepc.commons.exports;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
public class SwingTest extends JDialog{
public SwingTest(){
this.setLayout(new GridLayout(3,3)); /*设置布局,三行三列*/
this.setPreferredSize(new Dimension(380, 300));//设置大小
this.setTitle("表格布局");
this.setVisible(true);//设置dialog显示
this.pack();
JButton but1=new JButton("button1");
JButton but2=new JButton("button2");
JButton but3=new JButton("button3");
JButton but4=new JButton("button4");
JButton but5=new JButton("button5");
JButton but6=new JButton("button6");
JButton but7=new JButton("button7");
add(but1);
add(but2);
add(but3);
add(but4);
add(but5);
add(but6);
add(but7);
}
public static void main(String[] args) {
new SwingTest();
}
}
显示如下:
-
Android布局之TableLayout表格布局
2021-01-20 10:09:41Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子... java的swing编程和html中经常会使用到表格,可见表 -
android Activity线性布局和表格布局实例讲解
2021-01-05 12:13:47实验中只需要编写相应的xml的代码,java代码不需要更改,因为我们这里只是练习android的界面设计。线性布局:线性布局就是将各种控件按照行或者列依次进行排列。其中本实验用到的各控件的属性解释如下:android:... -
DIV 实现表格布局
2009-08-14 10:18:18不用到table标签也能实现 table功能。 -
androId Studio 的表格布局(TableLayout)
2021-10-17 19:56:17显示在第一列android:layout -column=“1” 整列拉伸 在Table layout下面加android:stretch Columns =“列数” -
Java怎样把表格放在绝对定位的面板上
2021-02-28 16:59:12展开全部空布局,绝对定位,需要在代码中设置组件的位置和大小。importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.SwingUtilities;... -
布局Layouts之TableLayout表格布局
2015-10-26 11:00:14TableLayout表格布局 TableLayout是指将子元素的位置分配到行或列中。Android的一个TableLayout有许多TableRow组成,每一个TableRow都会定义一个Row。TableLayout容器不会显示Row,Column,及Cell的边框线,每... -
二、java-表格布局(GridLayout)
2018-10-14 16:43:53GridLayout表格布局,非常容易理解,就是将窗体打上几行几列的格子,然后往里面放东西。 package task; import java.awt.*; import javax.swing.JButton; import javax.swing.JFrame; public class MyButton{ ... -
【Android】利用表格布局,Android中xml文件与java的交互制作登录界面
2015-06-03 21:51:14登录界面是图形编程、网页编程的一个经典而又基础的...这个程序利用到安卓中的表格布局。 先打开res/values/strings.xml中定义几个字符串。之所以不直接把字符串直接写在activity_main.xml的组件中,是因为免得Eclip -
Java学习笔记--GUI之AWT-布局(流式布局、表格布局、边界布局)及嵌套练习
2020-05-13 14:53:24流式布局 import java.awt.*; public class TestFlowLayout { public static void main(String[] args) { Frame frame=new Frame(); //组件--按钮 Button button1=new Button("按钮1"); Button button2=new ... -
java POI 单元格格式设置居中
2021-03-06 01:24:40// 创建工作表 // 产生表格标题行 HSSFRow rowm = sheet.createRow(0); HSSFCell cellTiltle = rowm.createCell(0); //sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面 - 可扩展】 ... -
让表格水平垂直居中
2021-03-12 23:19:56IDC导航机房1网易 网易,在杭州新浪 新浪,网上冲浪雅虎 台湾人开创机房2网易 网易,在杭州新浪 新浪,网上冲浪雅虎 台湾人开创机房3网易 网易,在杭州新浪 新浪,网上冲浪雅虎 台湾人开创机房4网易 网易,在杭州... -
java绝对布局
2021-03-03 11:38:56JAVA 程序设计习题集 程序设计习题集第一章 1、动手完成 Java 开发包的安装,...类 Panel 默认的布局管理器是___。 A. GridLayout B. BorderLayout C. FlowLayout D. GardLayout 正确答案: 4. Java 在 java.awt 和___... -
java窗体布局
2021-02-12 10:53:16实现窗口有好种方式一是直接在代码里面创建窗口再进行...import java.util.concurrent.*;public class HelloLabel{public static void main(String[] args) throws Exception{JFrame frame=new JFrame("Hello Swing"... -
Android表格布局简单案例(附完整源码)
2021-06-03 09:56:40表格布局精髓表格布局(TableLayout)是将页面划分成由行和列构成的单元格,由根元素TableLayout来标识。表格的行由TableRow来定义。由android:layout_column来指定列序号。布局步骤创建新Project点进Project—>... -
java图形界面文本框及布局基础
2018-07-05 22:29:201为利用JTextField文本框输入姓名地址信息,利用按钮打印到JTextArea上 2为复制第一个文本框内容至第二个文本框 两个文件有助于初学者熟悉BorderLayout布局,JPanel的设置,以及按钮添加点击事件的基本操作。 -
Java创建表格实例详解
2021-02-12 08:55:12表格是最常用的数据统计形式之一,在 swing 中 由 JTable 类实现表格。接下来,我们看看怎么利用 JTable 创建表格。在 JTable 类中除了默认的构造方法外,还提供了利用指定表格列名数组和表格数据数组创建表格的构造... -
java swing表格JTable
2014-08-20 07:21:59JTabel的一些方法,表格的设置,按钮的添加,界面的布局,只是一些简单的小玩意 -
java最强大的表格控件
2021-03-21 10:12:40在表格控件设计中,表格控件的数据源可以是 A) 查询 B) 表C) SQL语句 ...可编辑的 HTML JavaScri... 11页 1下载券 Web表格...泰州电信案例泰州电信内部正是由于上述反应不及时的问题,业务支撑部采用了 FineReportjava... -
Java布局管理器使用方法
2021-03-13 20:48:55很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题。我写过一篇《实现JAVA手动布局中各个组件能随窗口变化的方法》的文章,有读者反映算坐标不好算,问能不能用布局... -
hexiano:适用于 Android 的开源同构音乐键盘,带有 Jammer 和 Harmonic 表格布局
2021-06-13 09:36:53同构键盘是一个古老的概念,有些布局已有一个多世纪的历史(Janko、Wicki-Hayden)。 Hexano 不仅旨在将同构键盘概念传递到 Android 平台,而且还致力于为您提供符合人体工程学的工具,让您充分利用这些令人惊叹的... -
HTML页面源代码布局介绍_动力节点Java学院整理
2020-12-13 23:28:19HTML 页面源代码布局介绍 此介绍以google首页源代码截图为例: 从上到下依次介绍: <!DOCTYPE html> 此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。 XHTML规范:必须小写,有开始结束标签,属性也用双... -
java布局管理有哪些?详细展示
2021-02-12 22:05:33今天再为大家介绍一些相关知识,也就是java布局管理有哪些,并且通过详细的图片为大家展示。首先我们需要了解的是,java为我们提供了几个常用的布局管理器类,比如说:FlowLayout、BorderLayout、GridLayout、... -
Java——GUI——布局
2021-11-21 16:39:09Java语言GUI图形用户界面中,提供了三种布局(还有空布局),来完成图形用户界面布局,复杂的布局都是利用三种布局相互嵌套来完成。 流式布局 东南西北中布局 网格布局 1、流式布局 流式布局默认组件都是以居中...