2012-07-13 91 views
0

我仍然noob在Java,只知道的基本知识,我有一个小问题,我希望你能帮助我。从代码创建方法

我在项目中使用了5次这样的下一段代码,并且保持代码简单,我想让它成为一种方法。

我唯一需要在这段代码中改变的是查询,它是唯一的变量。

在此先感谢。 (对不起,我的英语不好)。

Vector columnNames = new Vector(); 
Vector data = new Vector(); 
JPanel panel = new JPanel(); // 
try { 
    Conectar(); 
    String query = "Select * from Dados"; 
    stm = (Statement) con.createStatement(); 
    rs = stm.executeQuery(query); 
    ResultSetMetaData metaData = rs.getMetaData(); 
    int columns = metaData.getColumnCount(); 
    for (int i = 1; i <= columns; i++) { 
    columnNames.addElement(metaData.getColumnName(i)); 
} 
while (rs.next()) { 
    Vector row = new Vector(columns); 
    for (int i = 1; i <= columns; i++) { 
    row.addElement(rs.getObject(i)); 
} 
data.addElement(row); 
} 
rs.close(); 
stm.close(); 
} catch (Exception e) { 
System.out.println(e); 
} 
JTable table = new JTable(data, columnNames); 
TableColumn column; 
for (int i = 0; i < table.getColumnCount(); i++) { 
column = table.getColumnModel().getColumn(i); 
column.setMaxWidth(250); 
} 
table.setPreferredScrollableViewportSize(new Dimension(600, 400)); 
table.setEnabled(false); 
JScrollPane scrollPane = new JScrollPane(table); panel.add(scrollPane); 
JFrame frame = new JFrame(); 
frame.add(panel); //adiciona o panel à frame 
frame.setResizable(false); 
frame.setSize(640, 480); //define o tamanho da frame 
frame.setLocationRelativeTo(null); 
frame.setVisible(true); //torna a frame visivel 
} 
+1

那么你的问题到底是什么? – posdef 2012-07-13 09:06:32

回答

1

只是围绕着你的代码

public void goodDescriptiveName(String query) { 
    ... 
} 

,并从你的代码中删除行

String query = "Select * from Dados"; 

。然后,你只需要调用它像这样:

goodDescriptiveName("Select * from Dados"); 
goodDescriptiveName("Select * from Next"); 
... 
0
public boolean someAction(String query) { 
... 
rs = stm.executeQuery(query); 
... 
return true; 
} 

如果您遇到任何错误,返回false。如果您不想用真/假测试它,只需使用void而不是boolean

+0

哇感谢您的快速回复,这真的很烂 – 2012-07-13 14:26:26

0
public void methodName(String query) { 
    Vector columnNames = new Vector(); 
    Vector data = new Vector(); 
    JPanel panel = new JPanel(); // 
    try { 
     Conectar(); 
     stm = (Statement) con.createStatement(); 
     rs = stm.executeQuery(query); 
     ResultSetMetaData metaData = rs.getMetaData(); 
     int columns = metaData.getColumnCount(); 
     for (int i = 1; i <= columns; i++) { 
     columnNames.addElement(metaData.getColumnName(i)); 
    } 
    while (rs.next()) { 
     Vector row = new Vector(columns); 
     for (int i = 1; i <= columns; i++) { 
     row.addElement(rs.getObject(i)); 
    } 
    data.addElement(row); 
    } 
    rs.close(); 
    stm.close(); 
    } catch (Exception e) { 
    System.out.println(e); 
    } 
    JTable table = new JTable(data, columnNames); 
    TableColumn column; 
    for (int i = 0; i < table.getColumnCount(); i++) { 
    column = table.getColumnModel().getColumn(i); 
    column.setMaxWidth(250); 
    } 
    table.setPreferredScrollableViewportSize(new Dimension(600, 400)); 
    table.setEnabled(false); 
    JScrollPane scrollPane = new JScrollPane(table); panel.add(scrollPane); 
    JFrame frame = new JFrame(); 
    frame.add(panel); //adiciona o panel à frame 
    frame.setResizable(false); 
    frame.setSize(640, 480); //define o tamanho da frame 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); //torna a frame visivel 
    } 
} 

但我认为GUI代码应该在其他地方提取。 :)

+0

我应该怎么做?你的意思是一种显示GUI的方法吗? – 2012-07-13 14:28:11

+0

@HugoMonteiro您可以创建一个获取数据的方法,另一个获取数据并创建按钮/表格和其他GUI元素。 – Pawel 2012-07-15 21:17:19