Java:GUI-JButton打开新的JPanel并读取jtext字段
我的问题是让我的主类和Journal类连接在一起,在主类中,用户将输入两个变量并单击按钮创建表,在Journal类中,它将读取这两个变量 我用netbeans创建了主类,用我自己的方法创建了表类,请帮忙!谢谢 这是主类Netbeans告诉我在右键单击>事件>操作>执行的操作时进行编辑的部分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) {
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;colF a | | 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
aJDialog
添加到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
方法,就像