package bzsh_dhqk;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.InetAddress;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
@SuppressWarnings("serial")
public class IndexGUI extends JFrame {
private static int originalValue = 100;
Object[] columnNames = {"单据编号"," 到货批号","供应商","料号", "料品名称", "料品规格", "实到数量(计价单位)","供方批号","收货程序","质检单结果","状态"};
String sql="SELECT * FROM [Xiling888].[dbo].dyfgs_bzsh1";
boolean ip;
Object[][] data;
DefaultTableModel df;
JTable table;
Thread thread;
public IndexGUI() {
super("标准收获-到货情况");
this.setVisible(true);
this.setBounds(0, 0, 780, 500);
this.setLocationRelativeTo(null);//让窗口在屏幕中间显示
this.setResizable(true);//让窗口大小可改变
this.setLayout(new BorderLayout());
ip=ping1("192.168.7.250",1000);
if(ip)
{ data = Select.getGoods(sql);
df = new DefaultTableModel(data, columnNames);
table = new ZTable(df);
}
table.getTableHeader().setForeground (Color.white);
table.getTableHeader().setBackground(new Color(16,50,80));
// 设置单元格选择方式
table.setSelectionBackground(new Color(47,117,181));
table.setSelectionForeground(Color.WHITE);
table.setRowHeight(40);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableCellRenderer tcr = new ColorTableCellRenderer();
table.setDefaultRenderer(Object.class,tcr);//为JTable增加渲染器,因为是针对于表格中的所有单元格,所有用Object.class
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
table.getTableHeader ().setFont (new Font ("微软雅黑", 0, 20));
table.setFont (new Font ("微软雅黑", Font.BOLD, 20));
table.getTableHeader().setReorderingAllowed(false);//列不能移动
table.getTableHeader().setResizingAllowed(true);//不可拉动表格
table.setModel(df);
JScrollPane jp = new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
this.add(jp, BorderLayout.CENTER);
jp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
jp.setViewportView(table);
final JScrollBar vBar = jp.getVerticalScrollBar();
vBar.addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
vBar.setValue(getOriginalValue());
if(getOriginalValue()!=e.getValue())
{
setOriginalValue(e.getValue());
}
}
});
JButton sx = new JButton("刷新");
sx.setBounds(440, 400, 100, 30);
sx.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//thread.interrupt();
ip=ping1("192.168.7.250",1000);
if(ip)
{
data = Select.getGoods(sql);
df.setDataVector(data, columnNames);
int No1=table.getColumnCount();
if(No1==11&&table!=null) {
table.getTableHeader().getColumnModel().getColumn(0).setPreferredWidth(230);
table.getTableHeader().getColumnModel().getColumn(1).setPreferredWidth(100);
table.getTableHeader().getColumnModel().getColumn(2).setPreferredWidth(330);
table.getTableHeader().getColumnModel().getColumn(3).setPreferredWidth(130);
table.getTableHeader().getColumnModel().getColumn(4).setPreferredWidth(200);
table.getTableHeader().getColumnModel().getColumn(5).setPreferredWidth(150);
table.getTableHeader().getColumnModel().getColumn(6).setPreferredWidth(100);
table.getTableHeader().getColumnModel().getColumn(7).setPreferredWidth(150);
table.getTableHeader().getColumnModel().getColumn(8).setPreferredWidth(230);
table.getTableHeader().getColumnModel().getColumn(9).setPreferredWidth(130);
table.getTableHeader().getColumnModel().getColumn(10).setPreferredWidth(130);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
}
table.setModel(df);
}
}
});
JPanel p=new JPanel();
this.add(p,BorderLayout.SOUTH);
p.add(sx);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}});
thread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
ip=ping1("192.168.7.250",1000);
if(ip)
{
try {//每隔5秒钟更新JTable
data = Select.getGoods(sql);
df.setDataVector(data, columnNames);
int No1=table.getColumnCount();
if(No1==11&&table!=null) {
table.getTableHeader().getColumnModel().getColumn(0).setPreferredWidth(230);
table.getTableHeader().getColumnModel().getColumn(1).setPreferredWidth(100);
table.getTableHeader().getColumnModel().getColumn(2).setPreferredWidth(330);
table.getTableHeader().getColumnModel().getColumn(3).setPreferredWidth(130);
table.getTableHeader().getColumnModel().getColumn(4).setPreferredWidth(200);
table.getTableHeader().getColumnModel().getColumn(5).setPreferredWidth(150);
table.getTableHeader().getColumnModel().getColumn(6).setPreferredWidth(100);
table.getTableHeader().getColumnModel().getColumn(7).setPreferredWidth(150);
table.getTableHeader().getColumnModel().getColumn(8).setPreferredWidth(230);
table.getTableHeader().getColumnModel().getColumn(9).setPreferredWidth(130);
table.getTableHeader().getColumnModel().getColumn(10).setPreferredWidth(130);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
}
table.setModel(df);
Thread.sleep(5000);
System.out.println("5秒更新一次");
} catch (ArrayIndexOutOfBoundsException|InterruptedException e) {
//e.printStackTrace();
}
}else
{
try {
Thread.sleep(5000);
System.out.println("5秒连接一次");
} catch (ArrayIndexOutOfBoundsException|InterruptedException e) {
//e.printStackTrace();
}
}
}
}
});
thread.start();
}
/* public void run() {
// TODO 自动生成的方法存根
while (true) {
ip=ping1("192.168.7.250",1000);
if(ip==true)
{
Object[] columnNames4 = {"单据编号"," 业务日期","供应商","料号", "料品名称", "料品规格", "实到数量(计价单位)","批号","收货程序", "状态"};
String sql4="SELECT * FROM [Xiling888].[dbo].dyfgs_bzsh1 ";
Object[][] data4 = bzsh_dhqk.Select.getGoods(sql4);
df.setDataVector(data4, columnNames4);
try {
Thread.sleep(5000);
System.out.println("5秒更新一次");
} catch (ArrayIndexOutOfBoundsException |InterruptedException e) {
e.printStackTrace();
}
}
else {
try {
Thread.sleep(5000);
System.out.println("5秒重连一次");
} catch (ArrayIndexOutOfBoundsException |InterruptedException e) {
// TODO 自动生成的 catch 块
System.out.println(e.getMessage());
}
break;
}
}
} */
class ZTable extends JTable{
private static final long serialVersionUID = 1L;
public ZTable(DefaultTableModel df) {
// TODO 自动生成的构造函数存根
}
public boolean isCellEditable(int rowIndex, int columnIndex) //重写方法改编可编辑性
{
return false; }
public JTableHeader getTableHeader() {
JTableHeader tableHeader=super.getTableHeader();
tableHeader.setReorderingAllowed(false);
DefaultTableCellRenderer hr=(DefaultTableCellRenderer)tableHeader.getDefaultRenderer();
hr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
return tableHeader;
}
public TableCellRenderer getDefaultRenderer(Class<?>columnClass) {
DefaultTableCellRenderer cr=(DefaultTableCellRenderer)super.getDefaultRenderer(columnClass);
cr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
return cr;
}
}
public static boolean ping1(String ip, int timeout) {
try {
return InetAddress.getByName(ip).isReachable(timeout); // 当返回值是true时,说明host是可用的,false则不可。
} catch (Exception ex) {
return false;
}
}
class ColorTableCellRenderer extends DefaultTableCellRenderer
{
/**
*
*/
private static final long serialVersionUID = -8327550537377223504L;
DefaultTableCellRenderer renderer=new DefaultTableCellRenderer();
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean getflag, int row, int column) {
int No1=table.getColumnCount();
if(No1==11&&table!=null) {
table.getTableHeader().getColumnModel().getColumn(0).setPreferredWidth(230);
table.getTableHeader().getColumnModel().getColumn(1).setPreferredWidth(100);
table.getTableHeader().getColumnModel().getColumn(2).setPreferredWidth(330);
table.getTableHeader().getColumnModel().getColumn(3).setPreferredWidth(130);
table.getTableHeader().getColumnModel().getColumn(4).setPreferredWidth(200);
table.getTableHeader().getColumnModel().getColumn(5).setPreferredWidth(150);
table.getTableHeader().getColumnModel().getColumn(6).setPreferredWidth(100);
table.getTableHeader().getColumnModel().getColumn(7).setPreferredWidth(150);
table.getTableHeader().getColumnModel().getColumn(8).setPreferredWidth(230);
table.getTableHeader().getColumnModel().getColumn(9).setPreferredWidth(130);
table.getTableHeader().getColumnModel().getColumn(10).setPreferredWidth(130);
}
if(column <1){
//调用基类方法
setBackground(new Color(191,191,191));
setForeground(Color.BLACK);
return super.getTableCellRendererComponent(table, value, isSelected,getflag, row, column);
}else if(column ==8){
if (value != null && value.toString().contains("到货-质检中-质验完成") && table.getValueAt(row, 10).equals("到货")) {
table.setValueAt("<html><font color='red'>到货</font>-质检中-质验完成</html>", row, 8);
} else if (value != null && value.toString().contains("到货-质检中-质验完成") && table.getValueAt(row, 10).equals("质检中"))
{
table.setValueAt("<html></font>到货-<font color='blue'>质检中</font>-质验完成</html>", row, 8);
}
else if (value != null && value.toString().contains("到货-质检中-质验完成") && table.getValueAt(row, 10).equals("质验完成"))
{
table.setValueAt("<html></font>到货-质检中-<font color='green'>质验完成</html>", row, 8);
}
/* else
{
c.setForeground(Color.BLACK);
} */
return super.getTableCellRendererComponent(table, value, isSelected,getflag, row, column);
}
else{
setBackground(new Color(217,217,217));
setForeground(Color.BLACK);
return super.getTableCellRendererComponent(table, value, isSelected,getflag, row, column);
}
}
}
private static void setOriginalValue(int value) {
originalValue = value;
}
private static int getOriginalValue() {
return originalValue;
}
@SuppressWarnings("unused")
private class ScrollListener implements AdjustmentListener {
private int previousValue;
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
if (e.getValueIsAdjusting()) {
previousValue = e.getValue();
}
}
public int getPreviousValue() {
return previousValue;
}
}
}
如何为这个UI界面的滚动条添加相同功能
最新发布