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;。
}
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;。
}
翻译医学文件,遇到了panel这个词。去查背景资料,简直大吃一惊:panel这个词竟然直接当中文用了,如下图:
。
。
那么问题来了,panel作为一个医学术语,连圈内人都会对它心生疑问,那么直接拿来用合适么?若不合适,又该怎么翻译它呢?
遇到不懂的词就要查词典,查专业工具书,查互联网。
panel这个词之所以被直接用在中文语境中,想必不是用的人懒,而是因为查一般的词典找不到适合医学语境的解释。
例如,牛津高阶、美国传统之类的通用词典给它的解释是“板”(镶板、 嵌板、金属板、仪表板)或“一组人”(陪审团、专门小组)。这些释义怎么看都无法套用在测序技术中涉及的gene panel上。
但是,去查医学词典,就会对panel这个词有比较明晰的理解。比如, medical-dictionary.thefreedictionary.com 上提供的panel的释义:
。
medical-dictionary.thefreedictionary.com 上也提供了test panel这个词条,如下图:
。
总结来说,panel就是指一组或一套检测,有时与test连用,表达同样的意思。
下面具体看几个含有panel的医学术语,以及它们的中文翻译和英语释义:
先看上表中的前两个术语,它们对应的中文并没有翻译出panel这个词,整体算是意译了。
再看后三个术语,panel译成了“套餐”。
再看这几个术语的英语翻译,全都是 "a group of *** tests"。也就是说, 一个panel是指一组tests(检测/测试) 。
上面的几个术语是由来已久的,中英文都已经深入人心(至少是圈内人的人心)。
然而,在基因检测领域,panel的用法(或者说“中文翻译”)似乎没那么根基牢固。下面这条解释是中文媒体上能找到的比较全面的了:
既然panel是外来词,当然要看看英语世界对它的解释了。
美国国家癌症研究所网站上的 基因学术语词典 The NCI Dictionary of Genetics Terms 里有 multiple-gene panel test 这个词条,释义是:
综上所术,实验检测语境下,作为医学术语的panel指的是一组/一套检测,中文媒体上出现过的翻译是“套餐”、“组合/集合”。
基于上文提到的英语释义和出现过的中文翻译,本人认为, 指“一组/一套检测”时,panel可以翻译为“检测组套”、“检测组合”、“检测套餐”,优先顺序:检测组套=检测组合>检测套餐(总觉得“套餐”的商业气息太重) 。相应地,panel test 可以翻译为“组套检测”,gene panel 可以翻译为“基因检测组套”或“基因组套检测”,具体怎么翻译要看语境强调的是“检测”还是“组套”。
panel并不是一个新造的词,而且早就运用于基因测序以外的医学环境。它不是一个不可译的词,希望它的中文翻译能普及开来,哪一天能收录到某个词典中就更好了。
电脑自动关机主要有以下几种原因造成:
1.
散热不好。由于天气温度的影响或CPU风扇的转数不够所引起的系统过热,从而会导致电脑的自动关机,建议可以检查一下系统温度是否正常。
2.
内存原因。当内存与主板插槽接触松动时也有可能引起电脑自动关机,建议检查内存是否和主板插紧。
3.
电源问题。电源的供电不足也是一个引起电脑自动关机的重要因素,但从此配置来看,这个问题存在的可能性很小。
4.
软件因素。由于病毒或木马所引起的电脑关机也比比皆是,尤其最近流行的机器狗等盗号木马,中了该病毒之后便会导致系统的重启与关机。如果使用的是Windows。
2000或Windows
XP系统,建议您在用杀毒软件杀毒之后及时打上冲击波的补丁,一般问题就可以解决。
1. 【口诀】天使在人间 一个美丽angel(天使) 来到人间travel(旅游) 经过一座chapel(小教堂) 透过玻璃panel(板) 发现两人quarrel(吵架) 为了一条towel(毛巾) 被人撕了label(标签) 这事真是novel(稀奇的)。
2. 【谐音】拍脑 一拍脑门成立个专门小组。 ->专门小组、面、板。
3. panel : 来自pane,布条,-el,小词后缀。即小布条,引申词义面板,金属板,窗玻璃。后用于指在布条上列举名字的陪审团成员或讨论小组清单。