我真的不知道如何提出这个问题,但我希望一些很棒的程序员可以帮助我。我真的很绝望。对不起我的英语。
我有一个像Windows服务一样工作的Java项目,它有一个无限的句子,并且它一直在寻找在同一台计算机上运行的另一个服务所接收的数据。
因此,我们将该Java项目导出为可运行的Jar,并将其安装为服务。
但是现在,我必须将该进程(无限时)与java swing项目集成,该项目必须显示存储在DBF文件中的一些数据。
场景如下:
我试图整合它们,但只是第一个过程正常,Swing Window显示为冻结。
这是我测试过的代码:
public class VisorApp {
JButton btnAddFlight = new JButton("Click");
static boolean p = true;
public VisorApp() {
List<Transacciones> t = new ArrayList<Transacciones>();
Vector columnNames = new Vector();
Vector data = new Vector();
JPanel panel = new JPanel();
// Las Columnas
columnNames.add("Nro Venta");columnNames.add("SURT");columnNames.add("PROD");
columnNames.add("S/.");columnNames.add("VOL");columnNames.add("FECHA");columnNames.add("PRECIO");
try {
Queries queries = new Queries();
t = queries.getAllTransactions();
} catch (Exception ex) {
Logger.getLogger(VisorApp.class.getName()).log(Level.SEVERE, null, ex);
}
for(int i=0;i<t.size();i++){
Vector row = new Vector(7);
for(int w=0;w<7;w++){
row.addElement("venta " + String.format("%04d", t.get(i).getNumero()));
row.addElement(t.get(i).getCara());
row.addElement(t.get(i).getProducto());
row.addElement(t.get(i).getSoles());
row.addElement(t.get(i).getGalones());
row.addElement(t.get(i).getFecha() + " " + t.get(i).getHora());
row.addElement(t.get(i).getPrecio());
}
data.addElement(row);
}
JTable table = new JTable(data, columnNames);
TableColumn column;
for (int i = 0; i < table.getColumnCount(); i++) {
column = table.getColumnModel().getColumn(i);
int column_width = table.getColumnModel().getColumn(i).getPreferredWidth();
column.setWidth(column_width);
}
table.setPreferredScrollableViewportSize(table.getPreferredSize());
table.setFillsViewportHeight(true);
table.setPreferredScrollableViewportSize(new Dimension(650, 400));
JScrollPane scrollPane = new JScrollPane(table);
panel.add(scrollPane);
JPanel pnlButton = new JPanel();
//FlightInfo setbounds
btnAddFlight.setBounds(60, 400, 220, 30);
pnlButton.setBounds(800, 800, 200, 100);
btnAddFlight.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
p = !p;
}
});
pnlButton.add(btnAddFlight);
JFrame frame = new JFrame();
frame.add(panel); //adding panel to the frame
frame.setSize(700, 470); //setting frame size
frame.setVisible(true); //setting visibility true
frame.setTitle("PRUEBA");
frame.setLocationRelativeTo(null);
frame.add(pnlButton);
}
public static void performClickedButton() {
System.out.println("Un metodo que repite algo");
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new VisorApp();
while(p){
performClickedButton();
}
}
});
}
如您所见,概述了我的目标。 我不知道是否可能,我知道java swing。 如果有人理解这个疯狂的事情,请帮助我。 提前谢谢。
问候。