Java:GUI-JButton打开新的JPanel并读取jtext字段

Java:GUI-JButton打开新的JPanel并读取jtext字段,java,swing,jtable,jbutton,jtextfield,Java,Swing,Jtable,Jbutton,Jtextfield,我的问题是让我的主类和Journal类连接在一起,在主类中,用户将输入两个变量并单击按钮创建表,在Journal类中,它将读取这两个变量 我用netbeans创建了主类,用我自己的方法创建了表类,请帮忙!谢谢 这是主类Netbeans告诉我在右键单击>事件>操作>执行的操作时进行编辑的部分 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

我的问题是让我的主类和Journal类连接在一起,在主类中,用户将输入两个变量并单击按钮创建表,在Journal类中,它将读取这两个变量

我用netbeans创建了主类,用我自己的方法创建了表类,请帮忙!谢谢 这是主类Netbeans告诉我在右键单击>事件>操作>执行的操作时进行编辑的部分

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
}                                        
我的日记课,我试着让它读JTextfield1和2,但我不知道如何组合它们

import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class Journal extends JPanel
{
    public Journal() 
    {

        String colN1 = "Date";
        String colN2 = "Student"; 
        int a = Integer.parseInt(newJournal.jTextField1.getText());
        int b = Integer.parseInt(newJournal.jTextField2.getText());
        int c = a*2/b;
        int col = c*2;
        String[] columnNames = new String[col];
        for(int colF = 0; colF < col; colF++)
        {
            if(colF%2 == 0)
            {
                columnNames[colF] = colN1;
            }
            else
            {
                columnNames[colF] = colN2;
            }
        }
        int row = b;
        int d = 1;
        int s = 1;
        int x = 0;
        Integer f = new Integer(1);
        Object[][] data = new Object[row][col];
        for (int col1 = 0; col1 < data[0].length; col1++)
        {
            for (int row1 = 0; row1<data.length; row1++)
            {

                if(d > b)
                {
                    d = 1;
                }
                else if(s > a || x > 2)
                {
                    s = 1;
                    x++;
                }
                else if (row1 > row)
                {
                    row1 = 0;
                }
                else if(col1%2 == 0)
                {
                    data[row1][col1]= "Day " + d;
                    d++;  
                }
                else
                {
                    data[row1][col1]= s;
                    s++;
                }
            }
        }
        for (int col2 = 0; col2 < data[0].length; col2++)
        {
            for (int row2 = 0; row2<data.length; row2++)
            {
                if(s > a || x > 2)
                {
                    s = 1;
                    x++;
                }
                else if(s!=data[row2][col2]&&col2%2!=0)
                {
                    data[row2][col2] = s;
                    s++;
                }
            }
        }
        for (int row3 = 0; row3<data.length; row3++)
        {
            for (int col3 = 0; col3 < data[0].length; col3++)
            {
                int rowA = row3 + 1;
                int rowS = row3 - 1;
                int rows = 1;
                int colA = col3 + 1;
                int colS = col3 - 1;
                int cols = 1;
                if(s > a || x > 2)
                {
                    s = 1;
                    x++;
                }
                else if(s==data[rowA][cols] && s == data[rowS][cols])
                {
                    cols=cols+2;
                }
                else if (s == data[rows][colA] && s == data [rows][colS])
                {
                    rows++;
                }
                else if(s!=data[row3][col3]&&col3%2!=0)
                {
                    data[row3][col3] = s;
                    s++;
                }
            }
        }

        JTable table = new JTable(data, columnNames);

        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JScrollPane scrollPane = new JScrollPane(table);
        add(scrollPane);
    }

    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());
    }

    public static void main(String[] args)
    {

        EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    gui();
                }
            });
    }
}
import java.awt.*;
导入java.util.*;
导入javax.swing.*;
导入javax.swing.table.*;
公共类期刊扩展JPanel
{
公共期刊()
{
字符串colN1=“日期”;
字符串colN2=“学生”;
int a=Integer.parseInt(newJournal.jTextField1.getText());
intb=Integer.parseInt(newJournal.jTextField2.getText());
INTC=a*2/b;
int col=c*2;
String[]columnNames=新字符串[col];
for(int colF=0;colFa | | x>2),则为else
{
s=1;
x++;
}
else if(第1行>第2行)
{
行1=0;
}
else if(col1%2==0)
{
数据[row1][col1]=“天”+d;
d++;
}
其他的
{
数据[row1][col1]=s;
s++;
}
}
}
for(int col2=0;col22)
{
s=1;
x++;
}
如果(s!=数据[row2][col2]&&col2%2!=0),则为else
{
数据[row2][col2]=s;
s++;
}
}
}
对于(int row3=0;row3 a | | x>2)
{
s=1;
x++;
}
else如果(s==数据[rowA][cols]&&s==数据[rowS][cols])
{
cols=cols+2;
}
else如果(s==数据[行][colA]&&s==数据[行][colS])
{
行++;
}
如果(s!=数据[row3][col3]&&col3%2!=0),则为else
{
数据[row3][col3]=s;
s++;
}
}
}
JTable table=新的JTable(数据、列名称);
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane=新的JScrollPane(表);
添加(滚动窗格);
}
私有静态voidgui()
{
JFrame gui=newjframe();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setTitle(“日记账列表”);
设置大小(700200);
gui.setLocationRelativeTo(空);
setVisible(true);
添加(新日记账());
}
公共静态void main(字符串[]args)
{
invokeLater(新的Runnable()
{
公开募捐
{
gui();
}
});
}
}

目前,您的
JTable
日志中是局部范围的
构造函数,因此无法从其他任何地方访问它。您要做的是将其声明为类成员,并为其指定一个
getter

  public class Journal extends JPanel {
      private JTable table;

      public Journal() {
          table = new JTable(...);
      }

      public JTable getTable() {
          return table;
      }
  }
现在可以使用
getTable()
Main
类访问和检索

此外,您还需要使用
TableModel
动态更新数据。你可以使用一个简单的,已经实现的。您想将此模型设置为
JTable
。像这样的

 public Journal() {
     ...
     DefaultTableModel model = new DefaultTableModel(data, columns);
     table = new JTable(model);
 }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String data1 = textField1.getText();
    String data2 = textField2.getText();

    JTable table = journal.getTable();
    DefaultTableMode model = (DefaultTableModel)table.getModel();

    model.addRow( new Object[] { data1, data2 } );
}  
因此,您已经为
Main
类设置了所有内容。在
actionperformed
中,您可以执行以下操作

 public Journal() {
     ...
     DefaultTableModel model = new DefaultTableModel(data, columns);
     table = new JTable(model);
 }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String data1 = textField1.getText();
    String data2 = textField2.getText();

    JTable table = journal.getTable();
    DefaultTableMode model = (DefaultTableModel)table.getModel();

    model.addRow( new Object[] { data1, data2 } );
}  

旁注

  • 您不需要两个
    main
    方法,因为我假设
    main
    类已经有了一个
    main
    方法
  • 也来看看。看起来您的
    Journal
    类在其
    main
    方法中使用了
    JFrame
    ,我假设您的
    main
    类也是
    JFrame
    。你能做的就是把
    Journal
    a
    JDialog
    添加到
    JTable

目前,您的
JTable
日志中是局部范围的
构造函数,因此无法从其他任何地方访问它。您要做的是将其声明为类成员,并为其指定一个
getter

  public class Journal extends JPanel {
      private JTable table;

      public Journal() {
          table = new JTable(...);
      }

      public JTable getTable() {
          return table;
      }
  }
现在可以使用
getTable()
Main
类访问和检索

此外,您还需要使用
TableModel
动态更新数据。你可以使用一个简单的,已经实现的。您想将此模型设置为
JTable
。像这样的

 public Journal() {
     ...
     DefaultTableModel model = new DefaultTableModel(data, columns);
     table = new JTable(model);
 }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String data1 = textField1.getText();
    String data2 = textField2.getText();

    JTable table = journal.getTable();
    DefaultTableMode model = (DefaultTableModel)table.getModel();

    model.addRow( new Object[] { data1, data2 } );
}  
因此,您已经为
Main
类设置了所有内容。在
actionperformed
中,您可以执行以下操作

 public Journal() {
     ...
     DefaultTableModel model = new DefaultTableModel(data, columns);
     table = new JTable(model);
 }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String data1 = textField1.getText();
    String data2 = textField2.getText();

    JTable table = journal.getTable();
    DefaultTableMode model = (DefaultTableModel)table.getModel();

    model.addRow( new Object[] { data1, data2 } );
}  

旁注

  • 您不需要两个
    main
    方法,就像