具体代码StudentAddInterFrm studentAddInterFrm = new StudentAddInterFrm(); table.add(studentAddInterFrm); studentAddInterFrm.setVisible(true);
时间: 2024-03-31 14:33:13 浏览: 12
根据您提供的代码,您的`StudentAddInterFrm`应该是一个`JInternalFrame`。如果您将`StudentAddInterFrm`添加到`table`中,`table`应该是一个`JDesktopPane`或其子类的对象。
在这种情况下,确保`table`已添加到您的外部窗口中,例如`JFrame`或`JDialog`。然后,请确保`StudentAddInterFrm`已设置为可见性(即`setVisible(true)`)。如果`StudentAddInterFrm`的大小或位置不正确,您可以使用`setBounds`方法或其他相关方法进行调整。
如果您的代码仍然无法解决问题,请提供更多详细信息,例如完整的代码或错误信息,以便我更好地帮助您解决问题。
相关问题
public class InterfaceCallExample extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private JButton callButton; private JTable resultTable; private DefaultTableModel tableModel; public InterfaceCallExample() { super("Interface Call Example"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); callButton = new JButton("查看数据"); callButton.addActionListener(this); panel.add(callButton); add(panel, BorderLayout.NORTH); tableModel = new DefaultTableModel(); tableModel.addColumn("id"); tableModel.addColumn("材料类型"); tableModel.addColumn("状态"); tableModel.addColumn("创建时间"); tableModel.addColumn("更改时间"); resultTable = new JTable(tableModel); add(new JScrollPane(resultTable), BorderLayout.CENTER); } public static void main(String[] args) { InterfaceCallExample example = new InterfaceCallExample(); example.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == callButton) { try { URL url = new URL("http://101.34.120.182:8081/wnapp/productType/getTypeId?category=1&status=0&type="); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String s = reader.readLine(); JSONObject jsonObject = new JSONObject(); JSONObject object = JSONObject.parseObject(s); Object o = object.get("data"); JSONObject object1 = JSONObject.parseObject(o.toString()); ArrayList<Map<String,Object>> list = (ArrayList<Map<String,Object>>) object1.get("list"); for (Map<String,Object> map : list){ String id = map.get("id").toString(); String titleName = map.get("titleName").toString(); String status = map.get("status").toString(); String createTime = map.get("createTime").toString(); String updateTime = map.get("updateTime").toString(); ArrayList<String> strings = new ArrayList<>(); strings.add(id); strings.add(titleName); strings.add(status); strings.add(createTime); strings.add(updateTime); String[] data = strings.toString().replace("[","").replace("]","").split(","); tableModel.addRow(data); } reader.close(); } catch (Exception ex) { ex.printStackTrace(); } } } } 将以上代码获取的每条数据后面添加删除和修改的按钮
您可以在 JTable 中添加一个新的列,用来显示删除和修改的按钮。在 actionPerformed() 方法中,您可以为每一行添加对应的按钮,并添加相应的 ActionListener。以下是您可以参考的修改代码:
```
public class InterfaceCallExample extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JButton callButton;
private JTable resultTable;
private DefaultTableModel tableModel;
public InterfaceCallExample() {
super("Interface Call Example");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
callButton = new JButton("查看数据");
callButton.addActionListener(this);
panel.add(callButton);
add(panel, BorderLayout.NORTH);
tableModel = new DefaultTableModel();
tableModel.addColumn("id");
tableModel.addColumn("材料类型");
tableModel.addColumn("状态");
tableModel.addColumn("创建时间");
tableModel.addColumn("更改时间");
tableModel.addColumn("删除");
tableModel.addColumn("修改");
resultTable = new JTable(tableModel);
add(new JScrollPane(resultTable), BorderLayout.CENTER);
}
public static void main(String[] args) {
InterfaceCallExample example = new InterfaceCallExample();
example.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == callButton) {
try {
URL url = new URL("http://101.34.120.182:8081/wnapp/productType/getTypeId?category=1&status=0&type=");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String s = reader.readLine();
JSONObject jsonObject = new JSONObject();
JSONObject object = JSONObject.parseObject(s);
Object o = object.get("data");
JSONObject object1 = JSONObject.parseObject(o.toString());
ArrayList<Map<String,Object>> list = (ArrayList<Map<String,Object>>) object1.get("list");
for (Map<String,Object> map : list){
String id = map.get("id").toString();
String titleName = map.get("titleName").toString();
String status = map.get("status").toString();
String createTime = map.get("createTime").toString();
String updateTime = map.get("updateTime").toString();
JButton deleteButton = new JButton("删除");
deleteButton.addActionListener(new DeleteActionListener(id));
JButton updateButton = new JButton("修改");
updateButton.addActionListener(new UpdateActionListener(id, titleName, status, createTime, updateTime));
ArrayList<String> strings = new ArrayList<>();
strings.add(id);
strings.add(titleName);
strings.add(status);
strings.add(createTime);
strings.add(updateTime);
strings.add("");
strings.add("");
String[] data = strings.toString().replace("[","").replace("]","").split(",");
tableModel.addRow(data);
int row = tableModel.getRowCount() - 1;
resultTable.setValueAt(deleteButton, row, 5);
resultTable.setValueAt(updateButton, row, 6);
}
reader.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
class DeleteActionListener implements ActionListener {
private String id;
public DeleteActionListener(String id) {
this.id = id;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO: 实现删除操作
}
}
class UpdateActionListener implements ActionListener {
private String id;
private String titleName;
private String status;
private String createTime;
private String updateTime;
public UpdateActionListener(String id, String titleName, String status, String createTime, String updateTime) {
this.id = id;
this.titleName = titleName;
this.status = status;
this.createTime = createTime;
this.updateTime = updateTime;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO: 实现修改操作
}
}
}
```
在 DeleteActionListener 和 UpdateActionListener 中,您可以实现相应的删除和修改操作。
帮我改写的能运行起来package com.swingtest; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class StudentManger extends JFrame implements ActionListener { JLabel lstname = new JLabel("学生姓名: "); JTextField tf_name = new JTextField(12); JLabel lmajor = new JLabel("专业"); JTextField tf_major = new JTextField(); JButton btnOK = new JButton("添加"); JButton btnDelete = new JButton("删除"); JButton btnQuit = new JButton("退出"); JTable table; DefaultTableModel model; public void studentManger(String name) { // TODO Auto-generated constructor stub JLabel welcome = new JLabel(name +",欢迎登录!"); setTitle("学生管理"); setSize(400,400); welcome.setBounds(50,20,200,20); lstname.setBounds(50,20,200,20); tf_name.setBounds(150,50,100,20); lmajor.setBounds(50,80,100,20); tf_major.setBounds(150,80,100,20); btnOK.setBounds(80,110,60,20); btnDelete.setBounds(150,110,60,20); btnQuit.setBounds(220,110,60,20); Container c = getContentPane(); JPanel panel = new JPanel(); panel.setLayout(null); panel.add(welcome); panel.add(lstname); panel.add(tf_name); panel.add(lmajor); panel.add(tf_major); panel.add(btnOK); panel.add(btnDelete); panel.add(btnQuit); String[] colName = {"姓名","专业"}; model = new DefaultTableModel(colName,0); table = new JTable(model); JScrollPane scrollPane = new JScrollPane(table); c.setLayout(new SpringLayout()); c.add(panel); c.add(scrollPane); setLocationRelativeTo(null); setVisible(true); btnOK.addActionListener(this); btnDelete.addActionListener(this); btnQuit.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Object ob = e.getSource(); if(ob == btnQuit) { System.exit(0); }else if(ob ==btnOK) { String[] stuInfo = {tf_name.getText(),tf_major.getText()}; model.addRow(stuInfo); tf_name.setText(""); tf_major.setText(""); }else if(ob == btnDelete) { if(table.getSelectedRow()<0) { JOptionPane.showMessageDialog(null,"请在表格中选中要删除的行");} else { model.removeRow(table.getSelectedRow()); } }} public static void main(String[] args) { new StudentManger(); } }
改写后的代码如下:
```java
package com.swingtest;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class StudentManager extends JFrame implements ActionListener {
private JLabel welcomeLabel;
private JLabel nameLabel;
private JTextField nameTextField;
private JLabel majorLabel;
private JTextField majorTextField;
private JButton addButton;
private JButton deleteButton;
private JButton quitButton;
private JTable table;
private DefaultTableModel model;
public StudentManager(String name) {
welcomeLabel = new JLabel(name + ",欢迎登录!");
nameLabel = new JLabel("学生姓名: ");
nameTextField = new JTextField(12);
majorLabel = new JLabel("专业");
majorTextField = new JTextField();
addButton = new JButton("添加");
deleteButton = new JButton("删除");
quitButton = new JButton("退出");
String[] colName = {"姓名", "专业"};
model = new DefaultTableModel(colName, 0);
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
setTitle("学生管理");
setSize(400, 400);
setLocationRelativeTo(null);
setVisible(true);
welcomeLabel.setBounds(50, 20, 200, 20);
nameLabel.setBounds(50, 50, 100, 20);
nameTextField.setBounds(150, 50, 100, 20);
majorLabel.setBounds(50, 80, 100, 20);
majorTextField.setBounds(150, 80, 100, 20);
addButton.setBounds(80, 110, 60, 20);
deleteButton.setBounds(150, 110, 60, 20);
quitButton.setBounds(220, 110, 60, 20);
Container c = getContentPane();
JPanel panel = new JPanel();
panel.setLayout(null);
panel.add(welcomeLabel);
panel.add(nameLabel);
panel.add(nameTextField);
panel.add(majorLabel);
panel.add(majorTextField);
panel.add(addButton);
panel.add(deleteButton);
panel.add(quitButton);
c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
c.add(panel);
c.add(scrollPane);
addButton.addActionListener(this);
deleteButton.addActionListener(this);
quitButton.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
Object ob = e.getSource();
if (ob == quitButton) {
System.exit(0);
} else if (ob == addButton) {
String[] stuInfo = {nameTextField.getText(), majorTextField.getText()};
model.addRow(stuInfo);
nameTextField.setText("");
majorTextField.setText("");
} else if (ob == deleteButton) {
if (table.getSelectedRow() < 0) {
JOptionPane.showMessageDialog(null, "请在表格中选中要删除的行");
} else {
model.removeRow(table.getSelectedRow());
}
}
}
public static void main(String[] args) {
new StudentManager("张三");
}
}
```
改写后的代码主要是对变量名和方法名进行规范化、重构,同时对布局管理器进行了修改,更加灵活。程序的功能并没有变化,仅仅是代码更加规范、易读。