Jmeter绘制前端面板
JTable,TableModel,DefaultTableModel与AbstractTableModel的小结
1 表格JTable并不存储自己的数据,而是从表格模型那里获取它的数据
包括了存取表格字段(cell)的内容、计算表格的列数等等的基本存取操作,
让设计者可以简单地利用TableModel来实现他所想要的表格
且实现了getColumnCount()、getRowCount()与getValueAt()3个方法
row 和 column 处单元格的属性值表格和数据分离。----借助了TableModel来进行分离。
1) 首先要实例化一个TableModel。(defaultTableModel)
2) 然后在把它当做数据加载到JTable。
3) (AbstractTableModel)比较少得用于特殊的表格。自己要实现接口,然后还要对里面的3个方法必须实现。
绘制面板
绘制面板前需要先定义水平画板,然后再定义垂直画板
JPanel panel = new VerticalPanel();
JPanel interfaceNamePanel = new HorizontalPanel();
需要将interfaceNamePanel添加到水平画板上
panel .add(interfaceNamePanel);
绘制好水平画板后,需要为已有的画板添加一个title,向现有边框添加一个标题
panel.setBorder(BorderFactory.createTitledBorder("JSF Consumer配置"));
在绘制面板时,需要为面板中的某一行画名称和值
JLabel jLabel = new JLabel(labelContent,SwingConstants.RIGHT);
jLabel.setLabelFor(jComponent);
panel.add(jLabel);
setlabelfor——属于JLabel类的方法
public void setlabelfor(component c)
- 设置要添加标签的组件。如果无法为 component 添加标签,则返回值可以为 null。如果设置了 displayedmnemonic 和 labelfor 属性,则助记符被激活时,标签将调用 labelfor 属性所指定组件的 requestfocus 方法。
 
添加提示tips
JLabel helpLabel = new JLabel();
helpLabel.setIcon(new ImageIcon(getClass).getResource("/image/help.png"))
helpLabel.setToolTipText("This is a tip");
引用的资源后是存放的图片路径
getClass().getResource(fileName) :表示只会在当前调用类所在的同一路径下查找该fileName文件
getClass().getClassLoader().getResource(fileName):表示只会在根目录下(/)查找该文件;
fileName如果是前面加“/”,如"/fileName",则表示绝对路径,取/目录下的该文件;
如果是前面没有加“/”,如"fileName",则表示相对路径,取与调用类同一路径下的该文件。
ImageIcon另外的示例
URL url = getClass().getResource("a.gif"); //当前编译后class文件所在目录查找
ImageIcon icon = new ImageIcon(url);
JTabbedPanel选项卡面板
JTabbedPane选项卡面板实现了一个多卡片的用户界面,通过它可以将一个复杂的对话框分割成若干个选项卡,实现对信息的分类显示和管理,使界面更简洁大方,还可以有效地减少窗体的个数
panel.setBorder(BorderFactory.createTitledBorder("JSF Consumer配置"));
setdatavector——属于DefaultTableModel类的方法
public void setdatavector(object[][] datavector,
                          object[] columnidentifiers)
用数组 datavector 中的值替换 datavector 实例变量中的值。object[][] 数组中第一个索引是行索引,第二个索引是列索引。columnidentifiers 是新列名称
表格中columnidentifiers是列的名称,datavector是填充到列中的值
Jtable详解
参见:https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#simple
其中初始化一个Jtable:
JTable table = new JTable(data, columnNames);
可以将上面的DefaultTableModel类定义的实例放入Jtable里。 JTable table = new JTable(DefaultTableModel);
这样就初始化了一个表格,表格中的列名称为columnNames,数值为data
table.setRowHeight(40);——设置行高
putClientProperty
putClientProperty("terminateEditOnFocusLost", Boolean.TRUE),这一句的作用是:当从当前的jtable移到其他地方,也就是其他控件的时候,当前编辑的数据就会固定了,也就是使之不处于编辑状态,从而让其他控件可以访问这些输入
为按钮添加监听方法
public void AddJianTing (JButton btn, final DefaultTableModel model){
btn.addActionListener(new ActionListener(){
@Override //重写监听的方法
public void actionPerformed(ActionEvent e) {
//为表格model添加一行
     model.addRow(blankRow); 
})
}
为删除按钮添加监听器
为删除按钮添加监听器时,需要对某一行进行选中,这时用到的table的一种方法
table.getSelectedRow()——这个代表的是选中某一行的返回的对应的行号
***Returns the index of the first selected row, -1 if no row is selected.
public int getSelectedRow() {
    return selectionModel.getMinSelectionIndex();
}
为Table添加滚动条
*Creates a <code>JScrollPane</code> that displays the
* contents of the specified
* component, where both horizontal and vertical scrollbars appear
* whenever the component's contents are larger than the view.
JScrollPane scrollpane = new JScrollPane(table);
在GUI类中getStaticLabel()
//这个方法是在选择线程组——添加——Sampler里面的名字起作用的,并且进入线程组后也是SAMPLE_NAME这个名称
@Override
public String getStaticLabel() {
    return SAMPLE_NAME;
}
setBorder()
public void setBorder(Border border)
设置此组件的边框。Border 对象负责定义组件的 insets(直接对组件重写所有 insets 设置),并且可选地呈现这些 insets 范围内的边框装饰。要为 swing 组件创建有装饰的和无装饰的区域(例如边距和填充),应该使用边框(而不是 insets)。在单个组件中可使用复合边框来嵌套多个边框。 虽然从技术上讲可以在继承自 JComponent 的所有对象上设置边框,但是很多标准 Swing 组件的外观实现无法正常地使用用户设置的边框。通常,如果希望在标准的 Swing 组件而不是 JPanel 或 JLabel 上设置边框时,建议将组件放入 JPanel 中,并在 JPanel 上设置边框。
Border对象的定义主要通过BorderFactory进行,这也是本文讨论的重点,根据API的解释:BorderFactory提供标准Border对象的工厂类。在任何可能的地方,此工厂类都将提供对已共享Border实例的引用。
常用方法:panel.setBorder(makeBorder());
GUI
组件:

Container类
setLayout方法
setLayout是java图形界面编程的常用方法,用来设置用户界面上的屏幕组件的格式布局,默认为流式布局。常用的有5种:FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout。
                    
                
                
            
        
浙公网安备 33010602011771号