[英]JTable : how to align data in the center or how to set row background color alternate
我如何在JTable
设置行背景色以及如何使数据与中心对齐JTable1
是动态的。 JTable
使用defaultTableModel
设置数据。 我想如果i%==0
不是背景色是#Color.GRAY
否则#Color.WHITE
我阅读了有关渲染类的信息,但不了解渲染器类的信息
import java.awt.Dimension;
import java.awt.Font;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
class FacultyList extends JPanel {
static DefaultTableModel dm;
JTable table;
JScrollPane jsp_table;
static Connection conn;
static Statement stmt;
static ResultSet rs;
public FacultyList(Connection c) {
conn = c;
String col_name[] = {"S.No.", "Name", "Father Name", "College ID",
"Gender", "Date of Birth", "Branch", "Contact No."};
dm = new DefaultTableModel(null, col_name);
table = new JTable(dm);
table.getTableHeader().setFont(new Font("Goudy Old Style", Font.BOLD, 15));
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.getColumnModel().getColumn(0).setPreferredWidth(50);
table.getColumnModel().getColumn(1).setPreferredWidth(150);
table.getColumnModel().getColumn(2).setPreferredWidth(150);
table.getColumnModel().getColumn(3).setPreferredWidth(125);
table.getColumnModel().getColumn(4).setPreferredWidth(50);
table.getColumnModel().getColumn(5).setPreferredWidth(125);
table.getColumnModel().getColumn(6).setPreferredWidth(225);
table.getColumnModel().getColumn(7).setPreferredWidth(150);
jsp_table = new JScrollPane(table);
jsp_table.setPreferredSize(new Dimension(975, 520));
addRowTable();
add(jsp_table);
}
public static void addRowTable() {
try {
int a = dm.getRowCount();
int i = 0;
while (i < a) {
dm.removeRow(0);
i++;
}
String fac = "Faculty";
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery("SELECT NAME, FNAME, CLG_ID, GANDER, "
+ "DOB, BRANCH, CONTACT FROM PROFILE "
+ "where I_AM = '" + fac + "'");
int count = 1;
while (rs.next()) {
String s[] = new String[8];
s[0] = "" + count;
s[1] = rs.getString(1);
s[2] = rs.getString(2);
s[3] = rs.getString(3);
s[4] = rs.getString(4);
s[5] = rs.getString(5);
s[6] = rs.getString(6);
s[7] = "" + rs.getLong(7);
count++;
if (i % 2 == 0) {
} else {
}
dm.addRow(s);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在此站点上或Java oracle doc上
TableCellRenderer只是绘画,是基于XxxTableCellRenderer中设置的静态绘画,不是交互式的,是关于幻觉的绘画,
XxxTableCellRenderer
绘画非常XxxTableCellRenderer
,可以从所有按键和鼠标事件(在相关API中实现的方法)中调用
它可以是JTable
单独定义,也可以是返回rulle的单独的类,为JTable
的视图绘制定义
在将数据库中的新数据添加到DefaultTableModel方面 , JDBC
不是设置或定义Renderer的好地方。
ResultSet.CONCUR_UPDATABLE
不能用于设置JTable
,从结果集的快照,它没有任何动作回数据库
为什么从JDBC
返回的值仅限于String s[] = new String[8];
,设置通过重写getColumnClass正确键入的数据
在Renderer中设置对齐方式(默认情况下,数据类型返回alingment),例如通过强制转换为JLabel,然后可以在其中使用JLabels API中实现的所有方法
默认情况下,整个JTable
的视图都使用了prepareRenderer , getTableCellRendererComponent ,并且对Renderer
许多尝试仅适用于具体的Columns
您可以使用自定义渲染器执行此操作。 可以按照以下步骤完成:
table1 = new JTable(){
public Component prepareRenderer(TableCellRenderer tcr, int row,
int column) {
Component c = super.prepareRenderer(tcr, row, column);
if (isRowSelected(row)) {
c.setForeground(getSelectionForeground());
c.setBackground(getSelectionBackground());
} else {
c.setForeground(getForeground());
c.setBackground((row % 2 == 0) ? getBackground()
: Color.lightGray);
}
int rendererWidth = c.getPreferredSize().width;
TableColumn tableColumn = getColumnModel().getColumn(column);
tableColumn.setPreferredWidth(Math.max(rendererWidth
+ getIntercellSpacing().width,
tableColumn.getPreferredWidth()));
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(SwingConstants.CENTER);
table1.getColumnModel().getColumn(column).setCellRenderer(rightRenderer);
return c;
}
};;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.