天天看點

Java+JTabbedPane+JTable

package loadtest;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.ComponentOrientation;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import java.util.Vector;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JEditorPane;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTabbedPane;

import javax.swing.JTable;

import javax.swing.JTextArea;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableModel;

public class LoadFrame extends JFrame implements ActionListener, Runnable {

private int WIDTH = 800;// 視窗的寬

private int HEIGHT = 500;// 視窗的高

private int north_HEGHT = 50;// 北部面闆的高

private int east_WIDTH = 170;

int row = 0;// account.txt 中資料的行數

String user_temp = “”;

String password_temp = “”;

String[] user;

String[] password;

JTextArea jta_console;

String str_control = “”;

JTable jtable;

public LoadFrame() {
    this.setTitle("小說采集器v1.0");
    this.setBounds(5, 5, WIDTH, HEIGHT);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setIconImage(new ImageIcon("imgs/logo.png").getImage());
           

// this.setAlwaysOnTop(true);

JPanel jp_north = new JPanel();
    JPanel jp_center = new JPanel();
    JPanel jp_north_left = new JPanel();
    JPanel jp_north_right = new JPanel();
    JPanel jp_east = new JPanel();

    /*-----------邊界布局設定-----------------*/
    this.setLayout(new BorderLayout());
    this.add(jp_north, BorderLayout.NORTH);
    this.add(jp_center, BorderLayout.CENTER);
    this.add(jp_east, BorderLayout.EAST);

    /*-----------北部面闆設定-----------------*/
    jp_north.setPreferredSize(new Dimension(WIDTH, north_HEGHT));
    jp_north.setLayout(null);
    jp_north_left.setBounds(0, 0, WIDTH / 3 * 2, north_HEGHT);
    jp_north_right.setBounds(WIDTH / 3 * 2, 0, WIDTH / 3 * 1, north_HEGHT);
    jp_north.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
    jp_north.add(jp_north_left);
    jp_north.add(jp_north_right);
    jp_north_left.setLayout(new GridLayout(1, 3));
    String[] str_jb_menu_name = { "AAA", "BBB", "CCC" };
    JButton[] jb = new JButton[str_jb_menu_name.length];
    for (int i = 0; i < str_jb_menu_name.length; i++) {
        jb[i] = new JButton(str_jb_menu_name[i]);
        jp_north_left.add(jb[i]);
        jb[i].setFocusable(false);
    }

    /*-----------中部面闆設定-----------------*/
    jp_center.setBackground(Color.LIGHT_GRAY);
    JTabbedPane jtbPane = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.WRAP_TAB_LAYOUT);
    jtbPane.setPreferredSize(new Dimension(600, 400));
    jp_center.add(jtbPane);
    JPanel jp1 = new JPanel();
    JPanel jp2 = new JPanel();
    jp1.setLayout(new BorderLayout());
    jtbPane.add(jp1, "   帳戶管理      ");
    jtbPane.add(jp2, "   xxxx   ");

    // Jtable設定,添加資料入表中
    String[] table_header = { "賬号", "密碼", "狀态1", "狀态2" };
    this.account();
    user = new String[row];
    password = new String[row];
    user = user_temp.split(" ");
    password = password_temp.split(" ");
    Object[][] object = new Object[row][table_header.length];
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < table_header.length; j++)
            switch (j) {
            case 0:
                object[i][j] = user[i];
                break;
            case 1:
                object[i][j] = password[i];
                break;
            case 2:
                object[i][j] = "未登入";
                break;
            case 3:
                object[i][j] = "未完成";
                break;

            default:
                System.out.println("未查到任何資料!");
                break;
            }
    }
    jtable = new JTable(object, table_header);
    DefaultTableCellRenderer dtcr = new DefaultTableCellRenderer();
    dtcr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
    jtable.setDefaultRenderer(Object.class, dtcr);
    jtable.getTableHeader().setReorderingAllowed(false);// 設定表頭不可拖動
    JScrollPane jscrollPane = new JScrollPane(jtable);
    jp1.add(jscrollPane, BorderLayout.CENTER);

    JPanel jp_manager = new JPanel();
    jp_manager.setPreferredSize(new Dimension(100, 300));
    jp1.add(jp_manager, BorderLayout.EAST);

    String[] str_managerbtn = { "一鍵登入", "action2", "action3" };
    JButton[] jb_manager = new JButton[str_managerbtn.length];
    for (int i = 0; i < str_managerbtn.length; i++) {
        jb_manager[i] = new JButton(str_managerbtn[i]);
        jb_manager[i].setPreferredSize(new Dimension(90, 30));
        jb_manager[i].setFocusable(false);
        jb_manager[i].addActionListener(this);
        jp_manager.add(jb_manager[i]);
    }

    /*-----------東部面闆設定-----------------*/
    jp_east.setBackground(Color.pink);
    jp_east.setPreferredSize(new Dimension(east_WIDTH, 50));
    JButton jb_resetConsole = new JButton("清空控制台");
    jb_resetConsole.addActionListener(this);
    jb_resetConsole.setPreferredSize(new Dimension(120, 22));
    jta_console = new JTextArea();
    JScrollPane jscrollPane_console = new JScrollPane(jta_console);
    jscrollPane_console.setPreferredSize(new Dimension(east_WIDTH - 10, HEIGHT - north_HEGHT - 80));
    jta_console.setLineWrap(true);
    jb_resetConsole.setFocusable(false);
    jp_east.add(jb_resetConsole);
    jp_east.add(jscrollPane_console);

    this.setVisible(true);
}

private void account() {
    try {
        BufferedReader bufReader = new BufferedReader(new InputStreamReader(new BufferedInputStream(
                new FileInputStream("txt/account.txt"))));
        String str_buftemp = "";
        while ((str_buftemp = bufReader.readLine()) != null) {
            user_temp += ((str_buftemp.split(" "))[0] + " ");
            password_temp += ((str_buftemp.split(" "))[1] + " ");
            row++;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static void main(String[] args) {
    new LoadFrame();

}

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand() == "一鍵登入") {
        Thread thread_load = new Thread(this);
        thread_load.start();
    }
    if (e.getActionCommand() == "清空控制台") {
        jta_console.setText("");
    }
}

@Override
public void run() {
    String str_doing = "線程正在執行!請稍等......";
    String str_end = "線程操作執行完畢!";
    BaiDuLoad[] baiduLoad = new BaiDuLoad[row];
    for (int i = 0; i < row; i++) {
        jta_console.setText(str_control + str_doing);
        if (i == 0) {
            user[i] = user[i].substring(1);
        }
        baiduLoad[i] = new BaiDuLoad(user[i], password[i]);
        str_control += user[i] + ": " + "\r\n" + baiduLoad[i].str_status + "\r\n\r\n";
        jta_console.setText(str_control);
        jtable.setValueAt("已登入", i, 2);

    }
    jta_console.setText(str_control + str_end);

}
           

}

Java+JTabbedPane+JTable