如何在JAVA表格中添加按钮组件?

如何在JAVA表格中添加按钮组件?,第1张

就是JTable中,加入JButton对吧。那个简单。写一个类继承与JButton并实现javax.swing.table.TableCellRenderer接口就行了。

然后用JTable的getColumn(Object)获取列,再用setCellRenderer(TableCellRenderer cellRenderer)方法就可以添加进表格了。

附相关API:

javax.swing.JTable

public TableColumngetColumn(Object identifier)返回表中列的 TableColumn 对象,当使用 equals 进行比较时,表的标识符等于

identifier。

参数:identifier - 标识符对象

返回:与标识符相匹配的 TableColumn 对象

javax.swing.table.TableCellRenderer

public interface TableCellRenderer

此接口定义了要成为 JTable 中单元格渲染器的任意对象所需的方法。

getTableCellRendererComponentComponentgetTableCellRendererComponent(JTable table,

Object value,

boolean isSelected,

boolean hasFocus,

int row,

int column)返回用于绘制单元格的组件。此方法用于在绘制前适当地配置渲染器。

TableCellRenderer 还负责呈现表示该表当前 DnD 放置位置的单元格(如果有)。如果此呈现器负责呈现 DnD 放置位置,则它应该直接查询表以确定给定的行和列是否表示放置位置:

JTable.DropLocation dropLocation = table.getDropLocation()

if (dropLocation != null

&&!dropLocation.isInsertRow()

&&!dropLocation.isInsertColumn()

&&dropLocation.getRow() == row

&&dropLocation.getColumn() == column) {

// this cell represents the current drop location

// so render it specially, perhaps with a different color

}

在打印 *** 作期间,将调用此方法(isSelected 和 hasFocus 为

false)阻止选择和焦点在打印输出中出现。要根据是否打印表进行其他定制,检查 JComponent.isPaintingForPrint()

的返回值。

参数:table - 要求渲染器绘制的 JTable;可以为 nullvalue - 要呈现的单元格的值。由具体的渲染器解释和绘制该值。例如,如果 value 是字符串

"true",则它可呈现为字符串,或者也可呈现为已选中的复选框。null 是有效值

isSelected - 如果使用选中样式的高亮显示来呈现该单元格,则为 true;否则为 false

hasFocus - 如果为

true,则适当地呈现单元格。例如,在单元格上放入特殊的边框,如果可以编辑该单元格,则以彩色呈现它,用于指示正在进行编辑

row - 要绘制的单元格的行索引。绘制头时,row 值是 -1

column - 要绘制的单元格的列索引

javax.swing.table.TableColumn

public void setCellRenderer(TableCellRenderer cellRenderer)设置 JTable 用于绘制此列各值的 TableCellRenderer。

参数:cellRenderer - 新的 cellRenderer

实现方法

1、初始化

首先添加JScrollPane的实例jScrollPane1,DefaultListModel

实例model1,然后使用model1生成JList的实例。在对话框合适的位置添加jScrollPane1,调整到合适的大小,然后在jScrollPane1上增加jList1.这样带有滚动条的列表框就添加完成了。

初始化一个Vector实例用来存储选择的列表元素。由于选择的元素具有不确定性,所以使用Vector这种存储空间可以动态变化的数据结构。Vector初始化实例时不能指定初始化长度,所以增加一个整形变量指示Vector中列表中对象的个数。

2、添加和删除列表元素

列表框中的元素添加和删除是通过model1的addElement方法和removeElement方法实现的。通过列表框的属性selectionMode可以设置列表框单选,单个间断选择和多个间断选择。Vector中存储的对象是和选择的元素相对应的,对象的添加和删除是通过addElement方法和removeElement方法实现的。

3、获得选择元素

在点击“确定”按钮以后,需要将Vector实例中的对象转化成为需要的数据类型。

实例解析

现以图1所示为例对具体实现方法进行描述。由图1中左面列表框中选择可用元素,选择方式设为多个间断选择,由于其他两种方式相对简单,实现方法可在这个实例的基础上修改得到。选定元素之后,点击“>>”按钮,选择的元素就会在右面的列表框显示出来。如果多选或者错选,可在右面的列表框中选定元素后点击“<<”按钮移去选定的元素。

以上实现的功能代码如下

 图1 列表框示例

具体程序实现方法如下。

import javax.swing.JPanel

import javax.swing.JFrame

import javax.swing.JScrollPane

import java.awt.Rectangle

import java.util.Vector

import javax.swing.JList

import javax.swing.JButton

import javax.swing.DefaultListModel

public class Llist extends JFrame {

private static final long serialVersionUID = 1L

private JPanel jContentPane = null

private JScrollPane jScrollPane = null

private JScrollPane jScrollPane1 = null

private JList jList = null

private JList jList1 = null

private JButton jButton = null

private JButton jButton1 = null

private DefaultListModel model

private DefaultListModel model2

/**

* This is the default constructor

*/

private Vector vc=new Vector() // @jve:decl-index=0:

private int num

public Llist() {

super()

initialize()

}

/**

* This method initializes this

*

* @return void

*/

private void initialize() {

this.setSize(393, 263)

this.setContentPane(getJContentPane())

this.setTitle("JFrame")

}

/**

* This method initializes jContentPane

*

* @return javax.swing.JPanel

*/

private JPanel getJContentPane() {

if (jContentPane == null) {

jContentPane = new JPanel()

jContentPane.setLayout(null)

jContentPane.add(getJScrollPane(), null)

jContentPane.add(getJScrollPane1(), null)

jContentPane.add(getJButton(), null)

jContentPane.add(getJButton1(), null)

jContentPane.add(getJButton2(), null)

jContentPane.add(getJButton3(), null)

}

return jContentPane

}

/**

* This method initializes jScrollPane

*

* @return javax.swing.JScrollPane

*/

private JScrollPane getJScrollPane() {

if (jScrollPane == null) {

jScrollPane = new JScrollPane()

jScrollPane.setBounds(new Rectangle(22, 23, 110, 152))

jScrollPane.setViewportView(getJList())

}

return jScrollPane

}

/**

* This method initializes jScrollPane1

*

* @return javax.swing.JScrollPane

*/

private JScrollPane getJScrollPane1() {

if (jScrollPane1 == null) {

jScrollPane1 = new JScrollPane()

jScrollPane1.setBounds(new Rectangle(223, 24, 116, 150))

jScrollPane1.setViewportView(getJList1())

}

return jScrollPane1

}

/**

* This method initializes jList

*

* @return javax.swing.JList

*/

String[]

a={"Element1","Element2","Element3","Element4","Element5","Element6","Element7","Element8","Element9","Element10",}

private JButton jButton2 = null

private JButton jButton3 = null

private JList getJList() {

if (jList == null) {

jList = new JList()

model=new DefaultListModel()

jList.setModel(model)

­

for(int i=0i<a.lengthi++)

{

model.addElement(a[i])

}

}

return jList

}

/**

* This method initializes jList1

*

* @return javax.swing.JList

*/

­

private JList getJList1() {

if (jList1 == null) {

­

jList1 = new JList()

model2=new DefaultListModel()

jList1.setModel(model2)

}

return jList1

}

/**

* This method initializes jButton

*

* @return javax.swing.JButton

*/

private JButton getJButton() {

if (jButton == null) {

jButton = new JButton()

jButton.setBounds(new Rectangle(149, 52, 56, 29))

jButton.setText(">>")

jButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent e) {

//System.out.println("actionPerformed()")// TODO Auto-generated Event

stub actionPerformed()

­

Object[] items=jList.getSelectedValues()

for(int i=0i<items.lengthi++)//从左边选中元素,往右边的列表中添加元素

{

model2.addElement(items[i])

num=num+1

vc.setSize(num)

­

}

}

})

}

return jButton

}

/**

* This method initializes jButton1

*

* @return javax.swing.JButton

*/

private JButton getJButton1() {

if (jButton1 == null) {

jButton1 = new JButton()

jButton1.setBounds(new Rectangle(145, 117, 65, 31))

jButton1.setText("<<")

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent e) {

//System.out.println("actionPerformed()")// TODO Auto-generated Event

stub actionPerformed()

for(int i=0i<jList1.getSelectedValues().lengthi++)

{

model2.removeElement(jList1.getSelectedValue())//删除选中右边的列表元素

num=num-1

vc.setSize(num)

­

­

}

}

})

}

return jButton1

}

/**

* This method initializes jButton2

*

* @return javax.swing.JButton

*/

private JButton getJButton2() {

if (jButton2 == null) {

jButton2 = new JButton()

jButton2.setBounds(new Rectangle(82, 193, 63, 27))

jButton2.setText("确定")

jButton2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent e) {

­

}

})

}

return jButton2

}

/**

* This method initializes jButton3

*

* @return javax.swing.JButton

*/

private JButton getJButton3() {

if (jButton3 == null) {

jButton3 = new JButton()

jButton3.setBounds(new Rectangle(196, 195, 66, 23))

jButton3.setText("取消")

jButton3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent e) {

//System.out.println("actionPerformed()")// TODO Auto-generated Event

stub actionPerformed()

model2.removeAllElements()//删除右边列表框的所有元素

}

})

}

return jButton3

}

}

你就这态度???((偷笑),不想站在巨人的肩膀上了吗,人活一世,装X二字)

import javax.swing.JButton

import javax.swing.JFrame

public class c {

public static void main(String[] args) {

// 你懂的

JFrame jf = new JFrame()

// 你懂的

jf.setSize(300, 400)

// JFrame做为一个画板,他里面可以有控件,有控件就有控件布局的样式,样式为null可以理解为自由布局

jf.setLayout(null)

// JFrame的setVisible的默认值为false,值的意义是是否显示.

jf.setVisible(true)

// 按钮

JButton jb = new JButton("按钮")

// 添加按钮

jf.add(jb)

// 因为上面的布局样式,他设置了x50y80坐标和长100宽30

jb.setBounds(50, 80, 100, 30)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7986181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存