Java 在半透明的swing窗口中创建jtable
我需要用java创建一个半透明的swing窗口,其中包含一个表和一个按钮。。表内容是从xml文件导入的。。我的密码是Java 在半透明的swing窗口中创建jtable,java,swing,jtable,Java,Swing,Jtable,我需要用java创建一个半透明的swing窗口,其中包含一个表和一个按钮。。表内容是从xml文件导入的。。我的密码是 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import static java.awt.GraphicsDevice.WindowTranslucency.*; import java.io.Buffer
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import static java.awt.GraphicsDevice.WindowTranslucency.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class Swings extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public File xml = null;
public Document dom = null;
public JScrollPane jScrollPane1;
public DefaultTableModel model;
public JTable jTable1;
public JButton update_button;
public Swings() {
setUndecorated(true);
setBackground(new Color(0, 0, 0, 0));
setSize(new Dimension(600, 500));
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// statusLabel.setSize(350,100);
JPanel panel = new JPanel() {
private static final long serialVersionUID = 1L;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (g instanceof Graphics2D) {
final int R = 220;
final int G = 220;
final int B = 250;
Paint p = new GradientPaint(0.0f, 0.0f, new Color(R, G, B, 0), 0.0f, getHeight(), new Color(R, G, B, 255), true);
Graphics2D g2d = (Graphics2D) g;
g2d.setPaint(p);
g2d.fillRect(0, 0, getWidth(), getHeight());
Font font = new Font("Serif", Font.PLAIN, 45);
g2d.setFont(font);
g2d.Color(Color.red);
g2d.drawString("Service Now Notification", 40, 120);
}
}
};
xml = new File(System.getProperty("user.dir") + File.separator + "Html1.xml");
installGUI();
setContentPane(panel);
setLayout(new GridBagLayout());
add(jtable1);
add(update_button);
}
public void installGUI() {
Container ctr = getContentPane();
ctr.setLayout(new BorderLayout());
model = new DefaultTableModel() {
private static final long serialVersionUID = 1L;
public boolean isCellEditable(int row, int column) {
return false;
}
};
// creates an instance of the table class and sets it up in a scrollpane
jTable1 = new JTable(model);
jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jScrollPane1 = new JScrollPane(jTable1);
ctr.add(BorderLayout.CENTER, jScrollPane1);
// add some columns
model.addColumn("Number");
model.addColumn("Priority");
model.addColumn("State");
model.addColumn("Assigned");
model.addColumn("Short_desc");
model.addColumn("Task");
if (xml.exists() && xml.length() != 0) {
dom = parseFile(xml);
insertTableRows(model, dom);
}
}
// creates an instance of a Document object
public Document parseFile(File file) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
dom = (Document) builder.parse(file);
}
catch (Exception e) {
e.printStackTrace();
}
return dom;
}
public void insertTableRows(DefaultTableModel tableModel, Document doc) {
Element root = doc.getDocumentElement();
NodeList list = root.getElementsByTagName("MS");
for (int i = 0; i < list.getLength(); ++i) {
Element e = (Element) list.item(i);
if (e.getNodeType() == Element.ELEMENT_NODE) {
Object[] row = { getArticleInfo("S", e) };
tableModel.addRow(row);
}
}
tableModel.fireTableStructureChanged();
tableModel.fireTableDataChanged();
}
public Object getArticleInfo(String tagName, Element elem) {
NodeList list = elem.getElementsByTagName(tagName);
for (int i = 0; i < list.getLength(); ++i) {
Node node = (Node) list.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Node child = (Node) node.getFirstChild();
return child.getTextContent().trim();
}
return null;
}
return null;
}
public static void main(String[] args) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
boolean isPerPixelTranslucencySupported = gd.isWindowTranslucencySupported(PERPIXEL_TRANSLUCENT);
if (!isPerPixelTranslucencySupported) {
System.out.println("Per-pixel translucency is not supported");
System.exit(0);
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Swing gtw = new Swing();
// gtw.runn();
gtw.setVisible(true);
}
});
}
}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
导入javax.swing.table.DefaultTableModel;
导入静态java.awt.GraphicsDevice.Window半透明。*;
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.File;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.SAXParser;
导入javax.xml.parsers.SAXParserFactory;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
导入org.xml.sax.SAXException;
导入org.xml.sax.helpers.DefaultHandler;
公共类扩展JFrame{
/**
*
*/
私有静态最终长serialVersionUID=1L;
公共文件xml=null;
公共文档dom=null;
公共JScrollPane jScrollPane1;
公共模型;
公共jTable1;
公共按钮更新按钮;
公众秋千(){
未装饰的设置(真实);
后退(新颜色(0,0,0,0));
设置尺寸(新尺寸(600500));
setLocationRelativeTo(空);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//statusLabel.setSize(350100);
JPanel面板=新的JPanel(){
私有静态最终长serialVersionUID=1L;
@凌驾
受保护组件(图形g){
超级组件(g);
if(图形的g实例2D){
最终整数R=220;
最终整数G=220;
最终积分B=250;
Paint p=新渐变Paint(0.0f,0.0f,新颜色(R,G,B,0),0.0f,getHeight(),新颜色(R,G,B,255),true);
Graphics2D g2d=(Graphics2D)g;
g2d.setPaint(p);
fillRect(0,0,getWidth(),getHeight());
Font Font=新字体(“衬线”,Font.PLAIN,45);
g2d.setFont(字体);
g2d。颜色(颜色。红色);
g2d.抽绳(“立即服务通知”,40120);
}
}
};
xml=新文件(System.getProperty(“user.dir”)+File.separator+“Html1.xml”);
installGUI();
设置内容窗格(面板);
setLayout(新的GridBagLayout());
添加(jtable1);
添加(更新按钮);
}
public-void-installGUI(){
容器ctr=getContentPane();
ctr.setLayout(新的BorderLayout());
模型=新的DefaultTableModel(){
私有静态最终长serialVersionUID=1L;
公共布尔值可编辑(int行,int列){
返回false;
}
};
//创建table类的实例并在滚动窗格中进行设置
jTable1=新的JTable(模型);
jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jScrollPane1=新的JScrollPane(jTable1);
中心添加(BorderLayout.CENTER,jScrollPane1);
//添加一些列
型号。添加列(“编号”);
模型。添加列(“优先级”);
模型。添加列(“状态”);
模型。添加列(“指定”);
模型添加列(“短描述”);
model.addColumn(“任务”);
if(xml.exists()&&xml.length()!=0){
dom=parseFile(xml);
insertTableRows(模型,dom);
}
}
//创建文档对象的实例
公共文档解析文件(文件文件){
试一试{
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
DocumentBuilder=factory.newDocumentBuilder();
dom=(文档)builder.parse(文件);
}
捕获(例外e){
e、 printStackTrace();
}
返回dom;
}
public void insertTableRows(DefaultTableModel tableModel,文档文档){
元素根=doc.getDocumentElement();
NodeList list=root.getElementsByTagName(“MS”);
对于(int i=0;i
xml文件内容如下所示:
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="0">
<TN RefId="0">
<T>Selected.System.Management.Automation.PSCustomObject</T>
<T>System.Management.Automation.PSCustomObject</T>
<T>System.Object</T>
</TN>
<MS>
<S N="Number">INC0811168</S>
<S N="Priority">2 - High</S>
<S N="State">Assigned</S>
<S N="Assigned">New</S>
<S N="Short_desc">Review Ad-Hoc Service Request for Lavon A Gudmundson</S>
<S N="Task">Catalog Task</S>
</MS>
</Obj>
</Objs>
选定的.System.Management.Automation.PSCustomObject
System.Management.Automation.PSCustomObject
系统对象
INC0811168
import java.awt.EventQueue;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.AbstractTableModel;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XMLTableExample {
public static void main(String[] args) {
new XMLTableExample();
}
public XMLTableExample() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JTable table = new JTable();
try {
table.setModel(new XMLTableModel(new File("Html1.xml")));
} catch (ParserConfigurationException | SAXException | IOException | XPathExpressionException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(table));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public static class XMLTableModel extends AbstractTableModel {
protected static final String[] COLUMN_NAMES = {
"Number",
"Priority",
"State",
"Assigned",
"Description",
"Task"
};
private List<MSEntity> rows;
public XMLTableModel(File file) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException {
rows = new ArrayList<>(25);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse(file);
setDocument(dom);
}
protected String getMSValue(Node msNode, String name) throws XPathExpressionException {
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expression = xpath.compile("S[@N='" + name + "']");
Node sNode = (Node)expression.evaluate(msNode, XPathConstants.NODE);
return sNode != null ? sNode.getTextContent() : null;
}
@Override
public int getRowCount() {
return rows.size();
}
@Override
public int getColumnCount() {
return COLUMN_NAMES.length;
}
@Override
public String getColumnName(int column) {
return COLUMN_NAMES[column];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
return String.class;
}
public MSEntity getEntityAtRow(int row) {
return rows.get(row);
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
MSEntity entity = getEntityAtRow(rowIndex);
Object value = null;
switch (columnIndex) {
case 0:
value = entity.getNumber();
break;
case 1:
value = entity.getPriority();
break;
case 2:
value = entity.getState();
break;
case 3:
value = entity.getAssigned();
break;
case 4:
value = entity.getDesc();
break;
case 5:
value = entity.getTask();
break;
}
return value;
}
public void setDocument(Document dom) throws XPathExpressionException {
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expression = xpath.compile("/Objs/Obj/MS");
NodeList nl = (NodeList)expression.evaluate(dom, XPathConstants.NODESET);
for (int index = 0; index < nl.getLength(); index++) {
Node node = nl.item(index);
String number = getMSValue(node, "Number");
String priority = getMSValue(node, "Priority");
String state = getMSValue(node, "State");
String assigned = getMSValue(node, "Assigned");
String desc = getMSValue(node, "Short_desc");
String task = getMSValue(node, "Task");
MSEntity entity = new MSEntity(number, priority, state, assigned, desc, task);
rows.add(entity);
}
fireTableDataChanged();
}
public class MSEntity {
private final String number;
private final String priority;
private final String state;
private final String assigned;
private final String desc;
private final String task;
public MSEntity(String number, String priority, String state, String assigned, String desc, String task) {
this.number = number;
this.priority = priority;
this.state = state;
this.assigned = assigned;
this.desc = desc;
this.task = task;
}
public String getAssigned() {
return assigned;
}
public String getDesc() {
return desc;
}
public String getNumber() {
return number;
}
public String getPriority() {
return priority;
}
public String getState() {
return state;
}
public String getTask() {
return task;
}
}
}
}