Jmeter绘制前端面板

JTable,TableModel,DefaultTableModel与AbstractTableModel的小结

1 表格JTable并不存储自己的数据,而是从表格模型那里获取它的数据

2 TableModel本身是一个interface,在这个interface里面定义了若干的方法,
包括了存取表格字段(cell)的内容、计算表格的列数等等的基本存取操作,
让设计者可以简单地利用TableModel来实现他所想要的表格
3 DefaultTableModel是继承AbstractTableModel抽象类而来,
且实现了getColumnCount()、getRowCount()与getValueAt()3个方法
getColumnCount()-返回表格的列数
getRowCount()-返回表格的行数
getValueAt(int row,int column)-返回 row 和 column 处单元格的属性值
4 java提供的AbstractTableModel是一个抽象类,这个类可以帮我们实现大部份的TableModel方法,除了getRowCount()、getColumnCount()、getValueAt()这三个方法外。因此我们的主要任务就是去实现这三个方法。利用这个抽象类就可以设计出不同格式的表格
表格和数据分离。----借助了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

组件:

组件就是一些基本的图形元素,包含有两类组件,一类是像我们经常用到的按钮、文本框、文本域、多选按钮、单选按钮等;另一类是我们经常说到的容器,比如说窗体、Panel等,它的作用主要是用来组织界面上的组件或者单元。
AWT组件:AWT组件是重量级组件,它依赖于本地操作系统的GUI,缺乏平台独立性。但是AWT组件简单稳定,兼容于任何一个JDK版本。AWT所涉及到的类一般在java.awt的包及其子包中。java.awt中的类负责与本地操作系统进行交互,让本地操作系统显示和操作组件。 AWT中的两个核心类是Container(容器)和Component类

 

 Container类

用来组织界面上的组件或者单元。有两种常用的Container(容器),一是Window,Window对象表示自由停泊的顶级窗口,另一个是Panel对象可作为容纳其他Component对象,但不能够独立存在,必须被添加到其他Container中,比如说Window或者Applet中。Container它有一定的范围和大小,一般都是矩形。也有一定的位置,这个位置可分相对位置和绝对位置。一个Container中可以包含其他Container,Container中可以嵌套Container,当Container显示时候,它里面的元素也被小时出来,当Container隐藏时或者关闭时,它包含的元素也被隐藏。

setLayout方法

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

函数声明格式:public void setLayout(LayoutManager manager)
一般的用法:setLayout(new BorderLayout())//或FlowLayout...随后调用add(...)即可。
常用的有5种:FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout。一般来说都要放在构造函数或初始化函数中,设置后再加入控件。
下面是几个使用setLayout()方法实现FlowLayout的例子:
setLayout(new FlowLayout(FlowLayout.RIGHT,20,40));
setLayout(new FlowLayout(FlowLayout.LEFT));
setLayout(new FlowLayout());
setLayout(new BorderLayout())——设置布局为边框布局,边框布局分东南西北中5个方位来添加控件。若没有指定方位,将添加到中间,上下左右都可以扩展。
 
 
 
 
 
 
 
posted @ 2020-01-19 15:24  stnnnn123  阅读(366)  评论(0)    收藏  举报