📄 mainframe.java
字号:
/*
* MainFrame.java
*
* Created on March 31, 2007, 7:34 PM
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Copyright (C) 2007 Cheok YanCheng <yccheok@yahoo.com>
*/
package org.yccheok.jstock.gui;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import org.apache.commons.httpclient.HttpException;
import org.yccheok.jstock.engine.*;
import com.thoughtworks.xstream.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.hssf.usermodel.*;
import javax.help.*;
import javax.swing.*;
import java.net.URL;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import javax.imageio.ImageIO;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
/**
*
* @author doraemon
*/
public class MainFrame extends javax.swing.JFrame {
/** Creates new form MainFrame */
public MainFrame() {
initComponents();
me = this;
createLookAndFeelMenuItem();
createCountryMenuItem();
createStockIndicatorEditor();
createIndicatorScannerJPanel();
createPortfolioManagementJPanel();
createChatJPanel();
createIconsAndToolTipTextForJTabbedPane();
this.createSystemTrayIcon();
this.initPreloadDatabase();
this.initChatDatas();
this.initStatusBar();
this.initMarketJPanel();
this.initUsernameAndPassword();
this.initTableHeaderToolTips();
this.initjComboBox1EditorComponentKeyListerner();
this.initMyJXStatusBarCountryLabelMouseAdapter();
this.initMyJXStatusBarImageLabelMouseAdapter();
this.initStockCodeAndSymbolDatabase(true);
this.initMarketThread();
this.initLatestNewsTask();
this.initRealTimeStockMonitor();
this.initRealTimeStocks();
this.initStockHistoryMonitor();
this.initOthersStockHistoryMonitor();
this.initBrokingFirmLogos();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
buttonGroup2 = new javax.swing.ButtonGroup();
jPanel6 = new javax.swing.JPanel();
jTabbedPane1 = new javax.swing.JTabbedPane();
jPanel8 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jComboBox1 = new AutoCompleteJComboBox();
jPanel10 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jLabel27 = new org.yccheok.jstock.gui.GradientJLabel(new Color(111, 148, 182), new Color(184, 207, 229), (float)0.9);
jLabel21 = new org.yccheok.jstock.gui.GradientJLabel(new Color(111, 148, 182), new Color(184, 207, 229), (float)0.9);
jLabel20 = new org.yccheok.jstock.gui.GradientJLabel(new Color(111, 148, 182), new Color(184, 207, 229), (float)0.9);
jLabel22 = new org.yccheok.jstock.gui.GradientJLabel(new Color(111, 148, 182), new Color(184, 207, 229), (float)0.9);
jLabel28 = new org.yccheok.jstock.gui.GradientJLabel(new Color(111, 148, 182), new Color(184, 207, 229), (float)0.9);
jLabel36 = new org.yccheok.jstock.gui.GradientJLabel(new Color(111, 148, 182), new Color(184, 207, 229), (float)0.9);
jLabel31 = new org.yccheok.jstock.gui.GradientJLabel(new Color(111, 148, 182), new Color(184, 207, 229), (float)0.9);
jLabel18 = new org.yccheok.jstock.gui.GradientJLabel(new Color(111, 148, 182), new Color(184, 207, 229), (float)0.9);
jLabel24 = new javax.swing.JLabel();
jLabel33 = new javax.swing.JLabel();
jLabel19 = new javax.swing.JLabel();
jLabel32 = new javax.swing.JLabel();
jLabel35 = new javax.swing.JLabel();
jLabel37 = new javax.swing.JLabel();
jLabel23 = new org.yccheok.jstock.gui.GradientJLabel(new Color(111, 148, 182), new Color(184, 207, 229), (float)0.9);
jLabel25 = new javax.swing.JLabel();
jLabel34 = new javax.swing.JLabel();
jLabel26 = new javax.swing.JLabel();
jLabel29 = new javax.swing.JLabel();
jLabel30 = new javax.swing.JLabel();
jLabel38 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jMenuBar2 = new javax.swing.JMenuBar();
jMenu3 = new javax.swing.JMenu();
jMenuItem2 = new javax.swing.JMenuItem();
jMenuItem1 = new javax.swing.JMenuItem();
jMenu5 = new javax.swing.JMenu();
jMenuItem4 = new javax.swing.JMenuItem();
jMenuItem7 = new javax.swing.JMenuItem();
jMenu6 = new javax.swing.JMenu();
jMenu7 = new javax.swing.JMenu();
jMenuItem8 = new javax.swing.JMenuItem();
jMenu1 = new javax.swing.JMenu();
jMenuItem6 = new javax.swing.JMenuItem();
jMenu4 = new javax.swing.JMenu();
jMenu2 = new javax.swing.JMenu();
jMenuItem3 = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JSeparator();
jMenuItem5 = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("JStock - Stock Market Software");
setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
setIconImage(getMyIconImage());
addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
formMouseClicked(evt);
}
});
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
public void windowDeiconified(java.awt.event.WindowEvent evt) {
formWindowDeiconified(evt);
}
public void windowIconified(java.awt.event.WindowEvent evt) {
formWindowIconified(evt);
}
});
getContentPane().setLayout(new java.awt.BorderLayout(5, 5));
jPanel6.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
jPanel6.setLayout(new java.awt.BorderLayout(5, 5));
this.jPanel6.add(statusBar, java.awt.BorderLayout.SOUTH);
getContentPane().add(jPanel6, java.awt.BorderLayout.SOUTH);
jTabbedPane1.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
jTabbedPane1.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jTabbedPane1StateChanged(evt);
}
});
jPanel8.setLayout(new java.awt.BorderLayout(5, 5));
jTable1.setAutoCreateRowSorter(true);
jTable1.setFont(new java.awt.Font("Tahoma", 1, 12));
jTable1.setModel(new StockTableModel());
jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
this.jTable1.setDefaultRenderer(Number.class, new StockTableCellRenderer());
this.jTable1.setDefaultRenderer(Double.class, new StockTableCellRenderer());
this.jTable1.setDefaultRenderer(Object.class, new StockTableCellRenderer());
this.jTable1.getModel().addTableModelListener(this.getTableModelListener());
this.jTable1.getTableHeader().addMouseListener(new TableColumnSelectionPopupListener(1));
this.jTable1.addMouseListener(new TableRowPopupListener());
jTable1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
jTable1KeyPressed(evt);
}
});
jScrollPane1.setViewportView(jTable1);
jPanel8.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jLabel1.setText("Stock");
jPanel1.add(jLabel1);
jComboBox1.setEditable(true);
jComboBox1.setPreferredSize(new java.awt.Dimension(150, 24));
this.jComboBox1.getEditor().getEditorComponent().addKeyListener(jComboBox1EditorComponentKeyAdapter);
jPanel1.add(jComboBox1);
jPanel8.add(jPanel1, java.awt.BorderLayout.NORTH);
jPanel10.setLayout(new java.awt.BorderLayout());
jPanel7.setBackground(new java.awt.Color(255, 255, 255));
jPanel7.setBorder(new org.jdesktop.swingx.border.DropShadowBorder());
jPanel7.setBorder(new org.jdesktop.swingx.border.DropShadowBorder(true));
jPanel7.setLayout(new java.awt.GridLayout(3, 7, 2, 2));
jLabel27.setBackground(new java.awt.Color(184, 207, 229));
jLabel27.setForeground(new java.awt.Color(255, 255, 255));
jPanel7.add(jLabel27);
jLabel21.setBackground(new java.awt.Color(184, 207, 229));
jLabel21.setForeground(new java.awt.Color(255, 255, 255));
jLabel21.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel21.setText("3rd Buy");
jLabel21.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2));
jLabel21.setFocusTraversalPolicyProvider(true);
jLabel21.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jPanel7.add(jLabel21);
jLabel20.setBackground(new java.awt.Color(184, 207, 229));
jLabel20.setForeground(new java.awt.Color(255, 255, 255));
jLabel20.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel20.setText("2nd Buy");
jLabel20.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2));
jLabel20.setFocusTraversalPolicyProvider(true);
jLabel20.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jPanel7.add(jLabel20);
jLabel22.setBackground(new java.awt.Color(184, 207, 229));
jLabel22.setForeground(new java.awt.Color(255, 255, 255));
jLabel22.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel22.setText("1st Buy");
jLabel22.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2));
jLabel22.setFocusTraversalPolicyProvider(true);
jLabel22.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jPanel7.add(jLabel22);
jLabel28.setBackground(new java.awt.Color(184, 207, 229));
jLabel28.setForeground(new java.awt.Color(255, 255, 255));
jLabel28.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel28.setText("1st Sell");
jLabel28.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2));
jPanel7.add(jLabel28);
jLabel36.setBackground(new java.awt.Color(184, 207, 229));
jLabel36.setForeground(new java.awt.Color(255, 255, 255));
jLabel36.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel36.setText("2nd Sell");
jLabel36.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2));
jPanel7.add(jLabel36);
jLabel31.setBackground(new java.awt.Color(184, 207, 229));
jLabel31.setForeground(new java.awt.Color(255, 255, 255));
jLabel31.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel31.setText("3rd Sell");
jLabel31.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2));
jPanel7.add(jLabel31);
jLabel18.setBackground(new java.awt.Color(184, 207, 229));
jLabel18.setForeground(new java.awt.Color(255, 255, 255));
jLabel18.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel18.setText("Price");
jPanel7.add(jLabel18);
jLabel24.setBackground(new java.awt.Color(255, 255, 204));
jLabel24.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel24.setOpaque(true);
jPanel7.add(jLabel24);
jLabel33.setBackground(new java.awt.Color(255, 255, 204));
jLabel33.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel33.setOpaque(true);
jPanel7.add(jLabel33);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -