2014-02-10 68 views
-1

我需要有 1.一個JButton在雜誌 類開放JTable中2.transfer在JTextField中的整數在雜誌類如何使用JButton向JPanel打開一個新的JPanel + Transfer整型變量?

我使用NetBeans中的變量a和b創建主類和我自己創建表類的方法請大家幫忙!謝謝!這是主類的部分Netbeans的告訴我,編輯,當我點擊右鍵>活動>動作>執行的操作

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    int data1 = Integer.parseInt(jTextField1.getText()); 
    int data2 = Integer.parseInt(jTextField2.getText()); 

} 

這裏是我的代碼:

package Components; 

/** 
* 
* @author dustinpx2014 
*/ 

import java.awt.*; 
import java.util.*; 
import javax.swing.*; 
import javax.swing.table.*; 
public class Journal extends JPanel 
{ 
    private JTable table; 
    private int a;//Number of Students 
    private int b;// Length of Trip 
    public Journal() 
    { 

     String colN1 = "Date"; 
     String colN2 = "Student"; 

     int c = a*2/b; // Determining # of Journals 
     int col = c*2; // Creating two columns for every journal(Day and Student) 
     String[] columnNames = new String[col]; //For Loop: inserting column names 
     for(int colF = 0; colF < col; colF++) 
     { 
      if(colF%2 == 0) 
      { 
       columnNames[colF] = colN1; 
      } 
      else 
      { 
       columnNames[colF] = colN2; 
      } 
     } 
     int row = b; //row = number of days 
     int d = 1; //day number 
     int s = 1; //student number 
     int x = 0; //counter for the # of times students write 
     int z = 1; // student number(no limit) 
     int z1 = a/2; // student number 2 
     int x1 = 0; // counter for the # of times students write 2 
     int x2 = 0; 
     int w = 1; 
     Object[][] data = new Object[row][col]; 

     for (int col1 = 0; col1 < data[0].length; col1++) 
     { 
      for (int row1 = 0; row1<data.length; row1++)//goes through the table by column 
      { 
       if(d > b) //reseting the date 
       { 
        d = 1; 
       } 
       if(s > a && x <= 2) //reseting student number and adds count 
       { 
        s = 1; 
        x++; 
       } 
       if(z > a) 
       { 
        z = 1; 
       } 
       if(z1 > a && x1 <= 2) 
       { 
        z1 = 1; 
        x1++; 
       } 
       if (w>a) 
       { 
        w++; 
       } 
       if(col1%2 == 0) //inserts the day 
       { 
        data[row1][col1]= "Day " + d; 
        d++; 
       } 
       else if (s!=data[row1][col1])//inserts student number 
       { 
        data[row1][col1]= s; 
        s++; 
        z++; 
        w++; 
       } 
       for (int col2 = 1; col2 < data[0].length; col2++) 
       { 
        for (int row2 = 0; row2<data.length; row2++)//goes through the table by column 
        { 
         if(z == data[row2][col2] && col2%2!=0)//checks for repeats and replaces them 
         { 

          for (int y = 0; y < col; y++) //checking all columns 
          { 
           if (z1 == a/2 && x1 <= 5) //adds count 
           { 
            x1++; 
           } 
           else if(z1 > a && x1 <= 5) 
           { 
            z1 = 1; 
            x1++; 

           } 
           if(z == data[row2][y]) 
           { 
            data[row2][col2] = z1; 
            z1++; 
            w++; 
           } 

          } 
         } 
        } 
       } 
       for (int row3 = 1; row3 < data.length; row3++) 
       { 
        for (int col3 = 0; col3<data[0].length; col3++)//goes through the table by rows 
        { 
         if(w == data[row3][col3] && col3%2!=0)//checks for repeats and replaces them 
         { 
          for(int y2 = 0; y2 < col; y2++) 
          { 
           if(
           row3<row-1 && 
           row3> 1 && 
           w==data[row3+1][y2] && 
           w==data[row3-1][y2] && 
           w==data[row3][y2] 
           ) //checks rows 
           { 
            data[row3][col3] = 0; 

           } 
          } 
         } 
        } 
       } 
      } 
     } 

     JTable table = new JTable(data, columnNames); 
     table.setPreferredScrollableViewportSize(table.getPreferredSize()); 
     JScrollPane scrollPane = new JScrollPane(table); 
     add(scrollPane); 
    } 

    public JTable getTable() { 
     return table; 
    } 

    private static void gui() 
    { 
     JFrame gui = new JFrame(); 
     gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     gui.setTitle("Journal List"); 
     gui.setSize(700,200); 
     gui.setLocationRelativeTo(null); 
     gui.setVisible(true); 
     gui.add(new Journal()); 
    } 

請幫幫忙!謝謝:)

+1

你已經告訴我們「需求」,但還沒有問一個具體的問題。請爲我們澄清一下是什麼讓你惱火,並給我們更多有關你的問題的細節。例如,什麼類持有你的JButton的ActionListener? Journal類如何與這個類相關聯? 「打開JTable」意味着什麼,因爲這沒有明顯的含義?再次請澄清一下,因爲我們只能理解你告訴我們的內容,而不是別的。 –

+0

我有兩個類主要與JTextFields和Jbutton和日記與Jtable擴展JPanel。我需要使用Main類來操作Journal類 如何使用JButton來打開JPanel,以及如何使用JTextField中的變量並將它們應用於變量a和b? – user3286337

+0

這與Netbeans無關,因此請勿將其添加到標題中。也不需要在標題中添加主標籤。 –

回答

2

我有兩個類Main與JTextFields和Jbutton和Journal與Jtable擴展JPanel。我需要使用Main類來操作Journal類如何使用JButton來打開JPanel,以及如何使用JTextField中的變量並將它們應用於變量a和b?

我假設你的主類有一個日誌字段,稱爲日誌,並且這個JPanel已經添加到你的main中。要調用日誌實例的方法,只需調用日誌變量上的方法即可。例如,Journal應該有公共的getter方法,它允許Main查詢其字段持有的數據。

請注意,我在Journal中看不到任何JTextField,但是如果Journal是我的類,我會再給它一個公共方法以允許它從JTable中獲取信息,並且在該方法中,我'調用JTable的方法之一來獲取日誌方法可能返回的信息。你可以使用一個像樣的JTable方法是getValueAt(int row, int column)。事實上,日記本方法可以簡單地換行方法:

public class Journal { 
    private JTable table; 

    // ...... lots more code 

    public Object getValueAt(int row, int column) { 
    // first check that row and column are not out of bounds, and deal with it 
    return table.getValueAt(row, column); 
    } 
} 

現在,如果你還希望在按下按鈕顯示此JTable,那麼你需要將它添加到一個容器在Main類,然後在更改其內容後調用相同容器上的revalidate和repaint。瞭解並理解該容器使用的佈局管理器也很重要,因爲有些人比其他人更容易接受新組件。