首先,建一个frame文件(Application应用程序),在Design中将this中的layout设置为null(不要布局器);
第二,在组件盘内点选Swing Container页签,选取Jpanel图标,在this上方拖拽一块区域,同样的方法在下方也拖拽一块区域,为了方便区分,将上方的Jpanel1区域设置为红色,下方的Jpanel2区域设置为橙色。将Jpanel1和Jpanel2的layout设置为null(不要布局器)。
第三,在Jpanel中放入一个Jlable标题栏,JTextField1文本框和Jbutton按钮,在组件盘内点选Swing 页签,选取JLable图标在Jpanel1的左边画一个标题栏,将text改为“请输入查询条件”,再选取JtextField在Jpanel1的中间画一个文本框,将text改为空,最后选取Jbutton在Jpanel1又边画一个按钮将text改为“查询”。在Jpanel2中画三个Jbutton按钮,将text分别设为“增加”、“删除”、“修改”。
第四,在this的中间建一个表格用来显示数据库数据的内容,在Swing Container页签,选取jScrollPane图标,在this的中间拖拽一个大的区域,接着在组件盘内点选Swing 页签,选取JTable图标,将Jtable加入到jScrollPane中。
这样我的界面就做好了,但这个界面不能随窗口自动调整大小。下面编程实现手动布局,使各区域能随窗口自动调整大小。
先用鼠标选中this窗体,再选择右边的事件Events中的componentResized,双击鼠标就进到void this_componentResized(ComponentEvent e) {}中,在{}中写入下列代码:
//设置jPanel1的起点坐标
jPanel1.setLocation(0,0)
jPanel1.setSize(this.getWidth(),jPanel1.getHeight())
//设置jPanel2的起点坐标(37是标题栏的高度)
jPanel2.setLocation(0,this.getHeight()-jPanel2.getHeight()-37)
//设置jPanel1的高度和宽度
jPanel2.setSize(this.getWidth(),jPanel2.getHeight())
//设置jScrollPanel的起点坐标
jScrollPane1.setLocation(0,jPanel1.getHeight())
//设置jScrollPanel的高度和宽度
jScrollPane1.setSize(this.getWidth(),jPanel2.getY()-jPanel1.getHeight())
本程序只调整了Jpanel1、Jpanel2和JScrollPane1随窗口变化,同样的方法,可以使按钮、文本框等一起随窗口变化。
程序在“查询”按钮事件中模拟从数据库中取数据,并显示在表格中。为了简洁,程序没有对输入条件、增加、删除、修改等进行处理。
程序源代码:
package src
import javax.swing.*
import java.awt.*
import java.awt.event.*
import java.util.Vector
import javax.swing.table.DefaultTableModel
public class Frame1 extends JFrame {
JPanel jPanel1 = new JPanel()
JPanel jPanel2 = new JPanel()
JScrollPane jScrollPane1 = new JScrollPane()
JTable jTable1 = new JTable()
JLabel jLabel1 = new JLabel()
JTextField jTextField1 = new JTextField()
JButton jButton1 = new JButton()
JButton jButton2 = new JButton()
JButton jButton3 = new JButton()
JButton jButton4 = new JButton()
public Frame1() {
try {
jbInit()
}
catch(Exception e) {
e.printStackTrace()
}
}
public static void main(String[] args) {
Frame1 frame1 = new Frame1()
//定义显示窗体的大小显示窗口
frame1.setSize(400, 350)
frame1.show()
//激活“查询”按钮事件
frame1.jButton1.doClick()
}
private void jbInit() throws Exception {
this.getContentPane().setLayout(null)
jPanel1.setBackground(Color.red)
jPanel1.setBounds(new Rectangle(43, 15, 297, 48))
jPanel1.setLayout(null)
jPanel2.setBounds(new Rectangle(50, 232, 297, 48))
jPanel2.setLayout(null)
jPanel2.setBackground(Color.orange)
jScrollPane1.getViewport().setBackground(Color.pink)
jScrollPane1.setBounds(new Rectangle(53, 74, 287, 138))
jLabel1.setFont(new java.awt.Font("Dialog", 0, 15))
jLabel1.setText("输入查内容")
jLabel1.setBounds(new Rectangle(44, 12, 80, 27))
jTextField1.setText("")
jTextField1.setBounds(new Rectangle(125, 14, 70, 22))
jButton1.setBounds(new Rectangle(221, 12, 61, 24))
jButton1.setFont(new java.awt.Font("Dialog", 0, 13))
jButton1.setText("查询")
jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this))
jButton2.setBounds(new Rectangle(13, 14, 66, 27))
jButton2.setFont(new java.awt.Font("Dialog", 0, 13))
jButton2.setText("增加")
jButton3.setText("删除")
jButton3.setBounds(new Rectangle(115, 14, 66, 27))
jButton3.setFont(new java.awt.Font("Dialog", 0, 13))
jButton4.setText("修改")
jButton4.setBounds(new Rectangle(217, 14, 66, 27))
jButton4.setFont(new java.awt.Font("Dialog", 0, 13))
this.addHierarchyBoundsListener(new Frame1_this_hierarchyBoundsAdapter(this))
this.addComponentListener(new Frame1_this_componentAdapter(this))
this.getContentPane().add(jPanel1, null)
jPanel1.add(jTextField1, null)
jPanel1.add(jButton1, null)
jPanel1.add(jLabel1, null)
this.getContentPane().add(jPanel2, null)
jPanel2.add(jButton3, null)
jPanel2.add(jButton4, null)
jPanel2.add(jButton2, null)
this.getContentPane().add(jScrollPane1, null)
jScrollPane1.getViewport().add(jTable1, null)
}
void this_componentResized(ComponentEvent e) {
//设置jPanel1的起点坐标
jPanel1.setLocation(0,0)
//设置jPanel1的高度和宽度
jPanel1.setSize(this.getWidth(),jPanel1.getHeight())
//设置jPanel2的起点坐标(37是标题栏的高度)
jPanel2.setLocation(0,this.getHeight()-jPanel2.getHeight()-37)
//设置jPanel2的高度和宽度
jPanel2.setSize(this.getWidth(),jPanel2.getHeight())
//设置jScrollPanel的起点坐标
jScrollPane1.setLocation(0,jPanel1.getHeight())
//设置jScrollPanel的高度和宽度
jScrollPane1.setSize(this.getWidth(),jPanel2.getY()-jPanel1.getHeight())
}
void jButton1_actionPerformed(ActionEvent e) {
// “查询”按钮事件,模拟从数据库中取数据并显示在表格中
try
{
Vector vcol = new Vector()//列名
Vector vrow = new Vector()//内容
//用一个for循环来模拟数据库的内容
for (int col=1col<31col++) {
vcol.addElement("列"+col)
}
for (int row=1row<101row++) {
Vector vr1 = new Vector()
for (int col=1col<31col++) {
vr1.addElement(row+"/"+col)
}
vrow.addElement(vr1)
}
DefaultTableModel dtm=new DefaultTableModel(vrow,vcol)
jTable1 = new JTable(vrow,vcol)
//滚动条设置左右滚
jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
//在滚动条中放入表
this.jScrollPane1.getViewport().add(jTable1, null)
}
catch(Exception ex)
{
System.out.println("错误:" + ex)
}
}
}
class Frame1_this_hierarchyBoundsAdapter extends java.awt.event.HierarchyBoundsAdapter {
Frame1 adaptee
Frame1_this_hierarchyBoundsAdapter(Frame1 adaptee) {
this.adaptee = adaptee
}
public void ancestorResized(HierarchyEvent e) {
}
}
class Frame1_this_componentAdapter extends java.awt.event.ComponentAdapter {
Frame1 adaptee
Frame1_this_componentAdapter(Frame1 adaptee) {
this.adaptee = adaptee
}
public void componentResized(ComponentEvent e) {
adaptee.this_componentResized(e)
}
}
class Frame1_jButton1_actionAdapter implements java.awt.event.ActionListener {
Frame1 adaptee
Frame1_jButton1_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e)
}
}
逐个Column设置,TableColumn 有方法
void
setMaxWidth(int maxWidth)
将 TableColumn 的最大宽度设置为 maxWidth;如果 maxWidth 小于最小宽度,则设置为最小宽度。
void
setMinWidth(int minWidth)
将 TableColumn 的最小宽度设置为 minWidth,如有必要,调整新的最小宽度以确保 0 <= minWidth <= maxWidth。
void
setPreferredWidth(int preferredWidth)
将此列的首选宽度设置为 preferredWidth。
void
setWidth(int width)
不应使用此方法来设置 JTable 中列的宽度,而应使用 setPreferredWidth。
void
sizeWidthToFit()
调整 TableColumn 的大小,以适合其标题单元格的宽度。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)