如何在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

给你个简单例子,懒得写通过窗体改了。

你自己看看把两条线中间的代码拿到窗体里去改改就行了,也可以变长。

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.DefaultComboBoxModel

import javax.swing.JButton

import javax.swing.JComboBox

import javax.swing.JFrame

public class LabelTest extends JFrame{

private JComboBox box

public LabelTest() {

init()

}

private void init() {

String [] arr = {"1", "2", "3", "4" }

setLayout(null)

box = new JComboBox(arr)

box.setBounds(10, 20, 100, 25)

JButton btn = new JButton("改变")

btn.setBounds(115, 20, 60, 25)

btn.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

//-----------------------------

DefaultComboBoxModel model = (DefaultComboBoxModel) box.getModel()

model.removeElementAt(2)

model.insertElementAt("sdd", 2)

//-----------------------------

}

})

add(box)

add(btn)

setSize(200, 100)

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

public static void main(String[] args) {

new LabelTest().setVisible(true)

}

}

lz  你好

(ps:  lz  加点儿分吧  太少了……)

具体代码如下:

import java.awt.*

import java.awt.event.*

import javax.swing.*

import java.io.*

public class Test extends JFrame {

private JLabel name,phone,sex

private JTextField inputName,inputPhone

private JComboBox sexBox

private String[] item = {"男", "女"}

private JButton save

public Test() {

super("信息管理")

setSize(240,300)

setLayout(new FlowLayout(FlowLayout.CENTER, 10, 30))

name = new JLabel("姓名:")

phone = new JLabel("手机号:")

sex = new JLabel("性别:")

inputName = new JTextField(14)

inputPhone = new JTextField(14)

sexBox = new JComboBox(item)

save = new JButton("储存")

save.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if(inputName.getText().equals("") || inputPhone.getText().equals("")) {

return

}

try {

File f = new File("info.txt")

BufferedWriter bw = new BufferedWriter(new FileWriter(f, true))

if(f.length() == 0){

bw.write("姓名\t性别\t手机号")

bw.newLine()

}

String str = inputName.getText()+"\t"+sexBox.getSelectedItem()+"\t"+inputPhone.getText()

bw.write(str)

bw.newLine()

bw.close()

} catch (Exception ex) {

}

}

})

getContentPane().setBackground(Color.WHITE)

getContentPane().add(Box.createHorizontalStrut(5))

getContentPane().add(name)

getContentPane().add(inputName)

getContentPane().add(phone)

getContentPane().add(inputPhone)

getContentPane().add(Box.createHorizontalStrut(35))

getContentPane().add(sex)

getContentPane().add(sexBox)

getContentPane().add(Box.createHorizontalStrut(35))

getContentPane().add(save)

setLocationRelativeTo(null)

setVisible(true)

setDefaultCloseOperation(3)

}

public static void main (String[] args) {

new Test()

}

}

希望能帮助你哈


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

原文地址:https://54852.com/bake/11939389.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存