import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.table.*;
/**
* <p>
* Title:
* </p>
* <p>
* Description:
* </p>
* <p>
* Copyright: Copyright (c) 2004
* </p>
* <p>
* Company:
* </p>
*
* @author not attributable
* @version 1.0
*/
public class TableRowHeightFrame extends JFrame {
Vector col = new Vector();
DefaultTableModel dm = new DefaultTableModel(col, 0);
JScrollPane jScrollPane1 = new JScrollPane();
JTable table = new JTable(dm);
public TableRowHeightFrame() {
try {
loadString();
jbInit();
loadata();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TableRowHeightFrame frm = new TableRowHeightFrame();
frm.setBounds(400, 300, 600, 400);
frm.setVisible(true);
}
void loadString() {
col.add("id");
col.add("name");
col.add("age");
col.add("address");
dm.setColumnIdentifiers(col);
}
private void jbInit() throws Exception {
this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
jScrollPane1.getViewport().add(table, null);
MouseAdapterListener listener = new MouseAdapterListener();
table.addMouseListener(listener);
table.addMouseMotionListener(listener);
}
void loadata() {
dm.addRow(new Object[] { "1", "zt", "30", "wuxi" });
dm.addRow(new Object[] { "2", "zt", "30", "wuxi" });
dm.addRow(new Object[] { "3", "zt", "30", "wuxi" });
dm.addRow(new Object[] { "4", "zt", "30", "wuxi" });
}
class MouseAdapterListener extends java.awt.event.MouseMotionAdapter
implements MouseListener {
int oldY = 0;
int newY = 0;
int row = 0;
int oldHeight = 0;
boolean drag = false;
int increase = 0;
public MouseAdapterListener() {
}
public void mouseMoved(MouseEvent e) {
int onRow = table.rowAtPoint(e.getPoint());
int height = 0;
for (int i = 0; i <= onRow; i++) {
height = height + table.getRowHeight(i);
}
if (height - e.getY() < 3) {
drag = true;
table.setCursor(new Cursor(Cursor.N_RESIZE_CURSOR));
} else {
drag = false;
table.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
}
public void mouseDragged(MouseEvent e) {
if (drag) {
int value = oldHeight + e.getY() - oldY;
if (value < 30)
table.setRowHeight(row, 30);
else
table.setRowHeight(row, oldHeight + e.getY() - oldY);
table.setRowSelectionInterval(row, row);
}
}
public void mousePressed(MouseEvent e) {
oldY = e.getY();
row = table.rowAtPoint(e.getPoint());
oldHeight = table.getRowHeight(row);
table.setRowSelectionInterval(row, row);
}
public void mouseReleased(MouseEvent e) {
newY = e.getY();
table.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
}
JTable拖拽调整行高,网上找的,凑合着用了。
分享到:
相关推荐
JTable 表格自定义行高 JTable 是 Java 语言中一个常用的表格组件,用于显示和编辑表格数据。在 Java 的 Swing 库中,JTable 是一个非常重要的组件,广泛应用于各种桌面应用程序中。然而,在使用 JTable 时,开发者...
本文将详细介绍如何通过一种简单的方法,为`JTable`添加行间拖拽功能,而无需对已有代码进行大规模修改或实现复杂的DnD接口。 首先,理解`JTable`的基本结构是至关重要的。`JTable`由`TableModel`、`...
JTable 拖动行 移动行的ui,直接 table.setUI(new DragDropRowTableUI()); 调用
在标题和描述中提到的“JTable 拖动行 移动行的ui”,正是指为`JTable`添加了拖放功能的用户界面。 要实现这个功能,通常我们需要自定义`JTable`的UI,或者使用已经存在的第三方库。在描述中提到了`table.setUI(new...
当用户释放鼠标时,结束拖动并根据鼠标的当前位置调整行的顺序。 3. **处理拖放逻辑**: 在拖放过程中,你需要跟踪鼠标的当前位置,并确定目标行的位置。当用户释放鼠标时,更新`JTable`的数据模型,将原行移动到...
标题和描述提到的`DragDropRowTableUI`是`JTable`的一种自定义用户界面(UI)实现,它扩展了`javax.swing.plaf.basic.BasicTableUI`,增加了拖放功能,使得用户可以直接通过鼠标拖动来移动`JTable`的行。 要实现`...
JTable具有自动调整列宽的功能,以适应窗口的变化。这一行为可以通过`setAutoResizeMode()`方法进行控制。该方法接受一个整数参数,表示不同的调整模式: - `AUTO_RESIZE_OFF`: 不自动调整列宽。 - `AUTO_RESIZE_...
调整行高,使用`table.setRowHeight(int pixelHeight)`;改变选中行的颜色,使用`table.setSelectionBackground()`和`table.setSelectionForeground()`;甚至可以隐藏水平和垂直的网格线,通过`table....
在使用 JTable 时,需要注意表格的列宽和行高的设定,这可以使用 TableColumn 的 setMaxWidth() 和 setMinWidth() 方法来实现。 JTable 动态刷新数据需要使用 DefaultTableModel 来存储和管理数据,然后使用...
- 使用`JTable`的`setRowHeight()`方法可以调整行高,适应跨行单元格的需要。 - 可以通过`DefaultTableCellRenderer`的`setHorizontalAlignment()`和`setVerticalAlignment()`方法来调整单元格内文本的对齐方式。 - ...
JTable使用 JTable使用JTable使用JTable使用
- **自动调整大小模式关闭**:`table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)`表示关闭表格自动调整列宽的功能。 - **行高设置**:`table.setRowHeight(20)`用于设置表格的行高。 - **列宽设置**:通过循环遍历...
可以通过`setRowHeight()`设置行高,`setShowGrid()`控制网格线的显示,`setFillsViewportHeight()`决定表格是否占据整个视口高度。还可以自定义单元格渲染器和编辑器。 7. **表头操作** 使用`getTableHeader()`...
可以使用 `setAutoResizeMode` 方法将表格列设置为不可随容器组件大小变化自动调整宽度,例如:`table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);` 2. 限制某列的宽度 可以使用 `TableColumn` 对象设置某列的...
1. **关闭自动调整宽度**:`table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF)`,防止列宽随窗口大小改变而自动调整。 2. **设置列宽限制**:通过`TableColumn`对象的`setPreferredWidth`, `setMaxWidth`和`...
这个例子展示了如何通过自定义渲染器实现`JTable`的自动换行功能,同时还能调整字体大小。这样的做法使得`JTable`更加灵活,可以适应各种复杂的数据显示需求。在实际项目中,你可以根据具体的需求对这个渲染器进行...
JTable的显示效果
实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。
打开NetBeans,创建一个新的Java Swing GUI应用,然后从工具箱中拖拽`JTable`到设计视图。接着,你可以右键点击`JTable`并选择“调整列宽”、“添加列”等操作。对于数据模型,NetBeans会自动为你创建一个`...
JTable还支持列宽的自动调整和手动调整,可以使用`AutoResizeMode`枚举来设置自动调整策略。此外,`TableColumn`类允许对列进行更细致的控制,例如隐藏、移动或改变列宽。 关于Excel表与JTable之间的转换,通常可以...