
java swing中在jTable中添加多个复选框的方式如下:
import java.awt.Componentimport 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
}
import javax.swing.*import java.awt.*
public class test extends JFrame{
public test(){
JButton button//按钮
JLabel label//标签
JComboBox combobox//下拉菜单
JCheckBox checkbox//复选框
JRadioButton radiobutton//单选框
JTextField textfield//文本框
button = new JButton("按钮")
label = new JLabel("标签:")
checkbox = new JCheckBox("复选框一")
radiobutton = new JRadioButton("单选框一")
combobox = new JComboBox()
textfield = new JTextField(100)
Container c = this.getContentPane()
c.setLayout(new FlowLayout())
c.add(button)
c.add(label)
c.add(checkbox)
c.add(radiobutton)
combobox.addItem("1")
combobox.addItem("2")
c.add(combobox)
c.add(textfield)
setSize(300, 200)
setVisible(true)
}
public static void main(String[] args) {
// TODO 自动生成方法存根
test mytest = new test()
}
}
概述具体框架使用jframe,文本框组件:JTextField;密码框组件:JPasswordField;标签组件:JLabel;复选框组件:JCheckBox;单选框组件:JRadioButton;按钮组件JButton。
登录界面:
代码实例
import javax.swing.*
import java.awt.* //导入必要的包
public class denglu extends JFrame{
JTextField jTextField //定义文本框组件
JPasswordField jPasswordField//定义密码框组件
JLabel jLabel1,jLabel2
JPanel jp1,jp2,jp3
JButton jb1,jb2//创建按钮
public denglu(){
jTextField = new JTextField(12)
jPasswordField = new JPasswordField(13)
jLabel1 = new JLabel("用户名")
jLabel2 = new JLabel("密码")
jb1 = new JButton("确认")
jb2 = new JButton("取消")
jp1 = new JPanel()
jp2 = new JPanel()
jp3 = new JPanel()
//设置布局
this.setLayout(new GridLayout(3,1))
jp1.add(jLabel1)
jp1.add(jTextField)//第一块面板添加用户名和文本框
jp2.add(jLabel2)
jp2.add(jPasswordField)//第二块面板添加密码和密码输入框
jp3.add(jb1)
jp3.add(jb2)//第三块面板添加确认和取消
// jp3.setLayout(new FlowLayout()) //因为JPanel默认布局方式为FlowLayout,所以可以注销这段代码.
this.add(jp1)
this.add(jp2)
this.add(jp3) //将三块面板添加到登陆框上面
//设置显示
this.setSize(300, 200)
//this.pack()
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
this.setVisible(true)
this.setTitle("登陆")
}
public static void main(String[] args){
new denglu()
}
}
拓展内容java swing包
Swing 是一个为Java设计的GUI工具包。
Swing是JAVA基础类的一部分。
Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。
Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的面板和主题(各种 *** 作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意面板。轻量级组件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。
概念解析:
JFrame – java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。
JPanel – Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包中,可以进行嵌套,功能是对窗体中具有相同逻辑功能的组件进行组合,是一种轻量级容器,可以加入到JFrame窗体中。。
JLabel – JLabel 对象可以显示文本、图像或同时显示二者。可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,标签在其显示区内垂直居中对齐。默认情况下,只显示文本的标签是开始边对齐;而只显示图像的标签则水平居中对齐。
JTextField –一个轻量级组件,它允许编辑单行文本。
JPasswordField – 允许我们输入了一行字像输入框,但隐藏星号(*) 或点创建密码(密码)
JButton – JButton 类的实例。用于创建按钮类似实例中的 "Login"。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)