我是java swing框架的新手,我遇到了一个问题,我想在Jtable中显示我的数据库值,Jtable应该在我使用JTree的同一帧中打印值,我已经写了一个代码但它在新的JFrame中打开JTable而不是现有的框架。 我有4节课 1:大型机 2:App(主要班级) 3:工具栏 4:TextPanel 我附上了所有课程的代码,请在这方面帮助我,
public class App {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
MainFrame m = new MainFrame();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
});
}
public class MainFrame extends JFrame {
JFrame frame1 = new JFrame("Database Search Result");
private JButton btn;
String[] columnNames = {"id", "state", "ip", "subnet","gateway","country"};
private TextPanel textPanel;
private Toolbar toolbar;
Connection conn;
Statement st;
ResultSet rs;
static JTable table;
String id;
PreparedStatement pst;
public MainFrame() throws SQLException, ClassNotFoundException {
setTitle("Hello World");
btn = new JButton("Hello");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="Hello")
{
System.out.println("yo");
showTableData();
}
}
});
Class.forName("com.mysql.jdbc.Driver");
conn =(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/software", "root", "root");
System.out.println("successe");
st = (Statement) conn.createStatement();
rs = (ResultSet) st.executeQuery("select * from software.servers");
textPanel = new TextPanel();
toolbar = new Toolbar();
toolbar.setTextPanel(textPanel);
setLayout(new BorderLayout());
add(toolbar,BorderLayout.NORTH);
add(btn,BorderLayout.SOUTH);
add(textPanel,BorderLayout.CENTER);
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void showTableData() {
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setLayout(new BorderLayout());
DefaultTableModel model = new DefaultTableModel();
model.setColumnIdentifiers(columnNames);
table = new JTable();
table.setModel(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
table.setFillsViewportHeight(true);
JScrollPane scroll = new JScrollPane(table);
scroll.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
int id;
String state = "";
String ip = "";
String subnet = "";
String gateway="";
String country="";
try {
st = (Statement) conn.createStatement();
rs = (ResultSet) st.executeQuery("select * from software.servers");
int i = 0;
while (rs.next()) {
id = rs.getInt("id");
state = rs.getString("state");
ip = rs.getString("ip");
subnet = rs.getString("subnet");
gateway=rs.getString("gateway");
country=rs.getString("country");
model.addRow(new Object[]{id, state, ip, subnet,gateway,country});
i++;
}
if (i < 1) {
JOptionPane.showMessageDialog(null, "No Record Found", "Error", JOptionPane.ERROR_MESSAGE);
}
if (i == 1) {
System.out.println(i + " Record Found");
} else {
System.out.println(i + " Records Found");
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
frame1.add(scroll);
frame1.setVisible(true);
frame1.setSize(400, 600);
}
public class TextPanel extends JPanel {
TextPanel(){
tree = new JTree(createTree());
setLayout(new BorderLayout());
add(new JScrollPane(tree),BorderLayout.CENTER);
}
public JTree getTree() {
return tree;
}
public void setTree(JTree tree) {
this.tree = tree;
}
public DefaultMutableTreeNode createTree(){
DefaultMutableTreeNode top = new DefaultMutableTreeNode("Servers");
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("USA");
DefaultMutableTreeNode server1 = new DefaultMutableTreeNode("Boston");
DefaultMutableTreeNode server2 = new DefaultMutableTreeNode("New York");
DefaultMutableTreeNode server3 = new DefaultMutableTreeNode("Califiornia");
node1.add(server1); node1.add(server2); node1.add(server3);
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("UK");
DefaultMutableTreeNode server4 = new DefaultMutableTreeNode("Warwick");
DefaultMutableTreeNode server5 = new DefaultMutableTreeNode("London");
DefaultMutableTreeNode server6 = new DefaultMutableTreeNode("Dublin");
node2.add(server4);node2.add(server5);node2.add(server6);
top.add(node1);top.add(node2);
return top;
}
public class Toolbar extends JPanel implements ActionListener {
private JButton btn1;
private JButton btn2;
private TextPanel panel;
public Toolbar() {
btn1= new JButton("one");
btn2=new JButton("two");
btn1.addActionListener(this);
btn2.addActionListener(this);
setLayout(new FlowLayout());
add(btn1);add(btn2);
}
public void setTextPanel(TextPanel textPanel) {
panel = textPanel;
}
@Override
public void actionPerformed(ActionEvent e) {
//panel.getTextArea().append("Hello\n");
JButton clicked = (JButton) e.getSource();
if(clicked == btn1){
System.out.println("Btn1 clicked");
}else{
System.out.println("Btn2 clicked");
}
}
}
我项目的截图很少