导航:首页 > 编程语言 > javaswingjtable

javaswingjtable

发布时间:2023-05-05 15:05:28

1. java swing如何在JTable一个单元格添加多个复选框

java swing中在jTable中添加多个复选框的方式如下:

importjava.awt.Component;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;

importjavax.swing.*;
importjavax.swing.table.*;


{

//作为测试的main方法
publicstaticvoidmain(String[]args){
newMyFirstJFrame().setVisible(true);
}

/**
*构造方法
*/
publicMyFirstJFrame(){
InitialComponent();
}

/**
*初始化组件的方法
*/
privatevoidInitialComponent(){
//设置窗体参数

//设置布局模式
setLayout(null);
//设置窗体大小
setSize(480,360);
//设置窗体居中(非常规方法)
setLocationRelativeTo(null);
//关闭窗体退出程序
setDefaultCloseOperation(DISPOSE_ON_CLOSE);

//初始化面板
panel=newJPanel();
panel.setSize(this.getWidth(),this.getHeight());
panel.setLocation(0,0);
panel.setLayout(null);

//初始化表格
table=newJTable(newDefaultTableModel(newObject[][]{{"第一行"},{"第二行"},{"第三行"},{"第四行"}},newString[]{"测试行1","测试行2"}){
/*(non-Javadoc)
*重写方法,判断指毕表单元格是否可编辑
*可以通过row和column索引判断某一个单元格是否可编辑
*此处设为都不可编辑
*@seejavax.swing.table.DefaultTableModel#isCellEditable(int,int)
*/
@Override
publicbooleanisCellEditable(introw,intcolumn){
returnfalse;
}
});

//开始向表格中添加复选框(注意:此示例较为简单,缺省很多判断,也没有动态代码支持)
//通过设置列渲染

//方法一:直接方式使用TableColumn的setCellRenderer方法(推荐)
//此方法可以设置某一列的渲染唯迹芹(即使用某一个组件--即控件来显示单元格数据)
table.getColumnModel().getColumn(1).setCellRenderer(newTableCellRenderer(){

/*(non-Javadoc)
*此方法用于向方法调用者返回某一单元格的渲染器(即显示数据的组建--或控件)
*可以为JCheckBoxJComboBoxJTextArea等
*@seejavax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable,java.lang.Object,boolean,boolean,int,int)
*/
@Override
(JTabletable,
Objectvalue,booleanisSelected,booleanhasFocus,
introw,intcolumn){
//创建用于返回的渲染组件
JCheckBoxck=newJCheckBox();
//使具有焦点的行对应的复选框选中
ck.setSelected(isSelected);
//设置单选box.setSelected(hasFocus);
//使复选框州缓在单元格内居中显示
ck.setHorizontalAlignment((int)0.5f);
returnck;
}});

//方法二:先设置列编辑器,然后设置单元格渲染
//设置列编辑器
//在以复选框为对象设置列编辑器时,必须保证该列能够被编辑,否则无法更改状态
//(此步骤可以省略,省略时不要忘记将列设为不可编辑)
//table.getColumnModel().getColumn(1).setCellEditor(newDefaultCellEditor(newJCheckBox()));

//设置单元格渲染(这里是设置表格级别的渲染)
/*table.setDefaultRenderer(Object.class,newTableCellRenderer(){

@Override
(JTabletable,
Objectvalue,booleanisSelected,booleanhasFocus,
introw,intcolumn){
//判断是否为需要渲染的列
if(column==1){
//和方法一基本一致
JCheckBoxbox=newJCheckBox();
box.setSelected(isSelected);
//设置单选box.setSelected(hasFocus);
box.setHorizontalAlignment((int)CENTER_ALIGNMENT);//0.5f
returnbox;
}
//如果不是需要渲染的列,封装文本域显示数据
returnnewJTextArea(value.toString());
}});*/

//在多选是需要按住Ctrl键或者鼠标按住拖过连续的需要选中的行,应该给用户说明
//第一种方法是被推荐的,因为它具有选中的高亮显示,界面能更加友好
table.setSize(panel.getWidth(),panel.getHeight()-90);
table.setLocation(0,0);


btn=newJButton("Test");
btn.setSize(80,40);
btn.setLocation((panel.getWidth())/2-40,panel.getHeight()-80);

//按钮点击时显示当前选中项
btn.addActionListener(newActionListener(){

@Override
publicvoidactionPerformed(ActionEvente){
for(introwindex:table.getSelectedRows()){
JOptionPane.showMessageDialog(null,rowindex+""+table.getValueAt(rowindex,0));
}
}});

panel.add(table);
panel.add(btn);
this.add(panel);

}

//定义一些必要的组件
privateJPanelpanel;
privateJTabletable;
privateJButtonbtn;
}

2. java swing JTable显示问题

如果是这样的话,我有一个建议。不要自动拉长表格列宽。
而是将卜绝单元格换成LABEL表示。
这样你就可以用tooltip属性。表格里是用....来携镇代替,鼠标放上去会有悬浮显型隐姿示全部。

3. java swing jtable中每一列数据类型怎样设置,比如设置一列的为Boolean类型

构造table模型的时候指定一个Class类型数组,覆写table模型(如DefaultTableModel)的getColumnClass(int columnIndex)方法烂纯,返回对应的Class数组小标元素即可。核历枣
另外,table默认是接受boolean类型改拆的,直接在构造模型数据时,把该列数据写为true/false就可,展示的时候就是一个复选框。
还有就是,部分IDE带设计视图,可以在视图上定义表格列类型和内容,如NetBeans。

4. Java swing怎么给JTable加表头,

//创建表格:直接有表迹没谈头
TableModelmodel=newDefaultTableModel(//
姿碰newObject[][]{{"11","12"},{"21","22"}},//数据
newObject[]{"第一列","第二列"}//表察告头
);
JTabletable=newJTable(model);

5. Java Swing中JTable的列顺序该怎么调整

TableColumn tc=this.getColumn(0);// 取到一列
JComboBox cbx = new JComboBox(new String[] {"a"坦岩,"b","c"});//此铅 建立下拉列表
TableCellEditor tce=new DefaultCellEditor(cbx);// 创建编辑器
tc.setCellEditor(tce);/森信好/ 设置编辑器

6. 我用JAVA的swing创建了一个窗口程序,拖了一个jTable控件在窗体上,怎样把数据库中的内容显示在Table上

public class T extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jPanel = null;
private JTextField jTextField = null;
private JTextField jTextField1 = null;
private JButton jButton = null;
private JButton jButton1 = null;
private JButton jButton2 = null;
private JTable jTable = null;
private DefaultTableModel tableModel = null;

private JPanel getJPanel() {
if (jPanel == null) {
JLabel jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(30, 50, 80, 25));
jLabel1.setText("请输入ISBN:");
JLabel jLabel = new JLabel();
jLabel.setBounds(new Rectangle(30, 20, 80, 25));
jLabel.setText("请输入书名:");
jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.setPreferredSize(new Dimension(1, 120));
jPanel.add(jLabel);
jPanel.add(jLabel1);
jPanel.add(getJTextField());
jPanel.add(getJTextField1());
jPanel.add(getJButton());
jPanel.add(getJButton1());
jPanel.add(getJButton2());
}
return jPanel;
}

private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(120, 20, 140, 25));
}
return jTextField;
}

private JTextField getJTextField1() {
if (jTextField1 == null) {
jTextField1 = new JTextField();
jTextField1.setBounds(new Rectangle(120, 50, 140, 25));
}
return jTextField1;
}

private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(270, 20, 60, 25));
jButton.setText("显示");
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/* 修改处 */
}
});
}
return jButton;
}

private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setBounds(new Rectangle(270, 50, 60, 25));
jButton1.setText("显示");
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/* 修改处 */
}
});
}
return jButton1;
}

private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setBounds(new Rectangle(240, 80, 90, 30));
jButton2.setText("显示全部");
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/*
* 修改处此处只要改下面一行,换成从数据库读就行
* 应该在DAO层加一个查询全部的方法
* public List<Titles> getAll();具体实现自己写。
* 把114行的代码改成:List<Titles> lists = new TitleDaoImpl().getAll();
* */
List<Titles> lists = Titles.list();
// 将表行数设为0行,防止异常
tableModel.setRowCount(0);
for (int i = 0; i < lists.size(); i++) { // 当每有一个Titles对象就添加一行
tableModel.addRow(new Object[] {});
}
Titles instance = null;
Object obj = null;
Object name = null;
for (int i = 0; i < tableModel.getRowCount(); i++) { // 行循环
instance = lists.get(i); // 为当前Titles对象赋值
for (int j = 0; j < tableModel.getColumnCount(); j++) {
name = tableModel.getColumnName(j);
if (name.equals("ISBN")) {
obj = instance.getISBN();
} else if (name.equals("title")) {
obj = instance.getTitle();
} else if (name.equals("publisher")) {
obj = instance.getPublisher();
} else if (name.equals("date")) {
obj = instance.getDate();
} else if (name.equals("price")) {
obj = instance.getPrice();
} else {
obj = "";
}
tableModel.setValueAt(obj, i, j);
}
}
}
});
}
return jButton2;
}

private JPanel getJPanel1() {
JScrollPane jScrollPane = new JScrollPane();
jScrollPane.setViewportView(getJTable());
JPanel panel = new JPanel(new BorderLayout());
panel.add(jScrollPane, BorderLayout.CENTER);
return panel;
}

private JTable getJTable() {
if (jTable == null) {
// 获得Titles类里的字段,一个字段在JTable中应该表现为一列
Field[] fields = Titles.class.getDeclaredFields();
// 将字段名保存为列名数组为DefaultTableModel所用
Object[] columnNames = new Object[fields.length];
for (int i = 0; i < fields.length; i++) {
columnNames[i] = fields[i].getName();
}
tableModel = new DefaultTableModel(columnNames, 0);
jTable = new JTable(tableModel);
}
return jTable;
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
T thisClass = new T();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}

public T() {
super();
setSize(580, 475);
getContentPane().add(getJPanel(), BorderLayout.SOUTH);
getContentPane().add(getJPanel1(), BorderLayout.CENTER);
}

}

7. java的swing编程,Jtable的单元格如何赋值

不能对JTable直接进行增删改,要先获取JTable的model然后修改model再将修改后的model赋给JTable

String[] data = new String[8];//用于操作表内数据行的data数组,元素个数要与table的列的数量相一致
int numT;//表格已有数据的行数
JTable jTable=new JTable();
DefaultTableModel model = (DefaultTableModel) this.jTable.getModel();
numT = model.getRowCount();//获取当前已有行数
while (numT > 0) {//如果是全体刷新表野仿格需要移除之前的所有数据行
model.removeRow(0);
numT--;
}
sql= "select name,number,area,price,room,acreage,fishing,mating from message";
try{
rs=stmt.executeQuery(sql);
while (rs.next()) {
data[0] = rs.getString(1).trim();
data[1] = rs.getString(2).trim();
data[2] = rs.getString(3).trim();
data[3] = rs.getString(4).trim();
data[4] = rs.getString(5).trim();
data[5] = rs.getString(6).trim();
data[6] = rs.getString(7).trim();
data[7] = rs.getString(8).trim();
model.addRow(data);
}
}catch(SQLException e){
System.err.print("Error" + e.getMessage());
}
jTable.setModel(model);//将修改后的model传回给JTable

至于JButton那旁橡些触发在事件侦听里,根据
jTable.getSelectedRow();获取已选行号
jTable.getSelectedColumn();获取已选列号
改行就光获取行号就可以了,然后读取模板,删掉该行再传回给JTable即可
在JTable创建时可以选择设置是否允许多选,不多选上面的方法已运脊旁经够了
还有什么网络hi吧,这里不多说了,省的又要审核了

8. java swing中jtable,table中有一列数据,是/否,我想把是的颜色变为红色怎么做求大神指点,,,

1、首先写一个类继承 DefaultTableCellRenderer
重写扮困余getTableCellRendererComponent 方法,方法里可以对你的要求进行设置,形如
if( value.equals("尺穗是"厅滚)){
this.setBackground(bgColor);
this.setForeground(fgColor);
}
2、然后设置:
xxxTable.setDefaultRenderer(Object.class, new xxxxTableRenderer());

9. java swing 通过Jtable可以读取配置properties文件。

这里的概念错了。
首先读取properties和显示properties是闷腊两个方面。
按MVC结构来说,JTable是View部分,只负埋罩碧责显示数据,数据怎么弯举来不管。读取properties文件可以使用java.util.Properties类。

阅读全文

与javaswingjtable相关的资料

热点内容
微信聊天界面源码 浏览:22
seo竞价推广点击价格算法公式 浏览:315
框架结构可以加密吗 浏览:218
python编译器怎么清除 浏览:73
linux全局socks代理 浏览:611
php微信抽奖 浏览:771
压缩算法嵌入式移植 浏览:531
php新手小例子 浏览:233
按照医生的算法一周是几天 浏览:805
三次b样条曲线算法 浏览:924
java7特性 浏览:555
爱山东app小学报名怎么知道报没报上 浏览:458
android获取wifi信号 浏览:133
娜拉美妆app怎么使用 浏览:760
有了源码要买服务器吗 浏览:365
app怎么查看自己的存款利息 浏览:515
碧蓝安卓与b站有什么区别 浏览:342
php静态块 浏览:719
ftpmget命令 浏览:475
源码时代怎样 浏览:415