【发布时间】:2015-08-28 20:53:49
【问题描述】:
我有一个关于我正在开发的程序的问题。它是一个用于 MqSQL db 的数据库管理器,用 Java 编写。所以我有以下程序结构。
所以我有一个扩展JFrame的主类,它是接口的主框架,像这样(删除了与讨论无关的不必要代码):
public class MainInterface extends JFrame {
public MainInterface {
................
MainInterface.setLayout(new FlowLayout());
MainInterface.setVisible(true);
TopToolbar toolbar;
try {
toolbar = new TopToolbar();
MainInterface.add(toolbar);
ResultsPanel Results = new ResultsPanel();
MainInterface.add(Results);
} catch (IOException e) {
e.printStackTrace();
}
}
TopToolbar 和 ResultsPanel 是扩展 JPanel 的另外 2 个类,TopToolbar 类有一个 JToolBar,其中添加了按钮(向前移动、向后移动、添加条目)
public class TopToolbar extends JPanel implements ActionListener {
TopToolBar()
{
//constructor in which i was adding button to the toolbar, not relevat
}
}
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (MoveFirst.equals(cmd)){
try {
DatabaseAccess disp = new DatabaseAccess();
disp.getResults();
int id = disp.return_id();
System.out.println(id);
} catch (//exceptions) {
e1.printStackTrace();
}
}
这是下一个按钮的 ActionListener 事件,它应该触发读取 db 中的下一个条目
DatabaseAccess 是另一个初始化数据库连接的类,它有以下两个方法:
public void getResults() throws SQLException {
Connection con = (Connection) DriverManager.getConnection(URL, user, "")
sql = (Statement) con.createStatement();
result_set = sql.executeQuery("select * from persons");
while (result_set.next()) {
id = result_set.getInt(1);
name = result_set.getString(2);
}
}
public int return_id(){
return id;
}
return_ID 方法返回(并且确实有效)ID(数据库中的第一个键,显然会为数据库中的其余条目添加方法)。 现在我想在最终的 JPanel 中显示 ID,即名为 ResultsSet 的那个(在 GridLayout 中只有 3 个 JLabels 和 3 个 TextFields 用于 ID、名称等)。
由于 dababase 类的创建(以及随后读取 db 并返回结果的方法)是在 TopToolBar Jpanel 内的 ActionPerformed 方法内完成的,因此我无法从 MainInterface JFrame 访问它,然后使用类似
ResultsPanel DispResults = new ResultsPanel();
add(DispResults);
DispResults.setID(id_Value)
其中 setID 将是 ResultsPanel 中的一个方法,它使用 JTextBox setText 来设置文本。
Hoope,我已经尽可能清楚地解释了我的问题。
【问题讨论】:
-
变量名不应以大写字符开头。您的一些变量是正确的,而有些则不是。如果您希望人们花时间阅读您的代码,请保持一致!
-
哎呀,不知道。我还在学习。我会尽快纠正他们。感谢您的提示。
-
由于 duffymo 有评论,您应该避免从
JFrame扩展,除了将您锁定在一个用例中,使其无法以其他方式重用您的 UI,您没有添加框架的任何新功能。查看5 Reasons to Use Composition over Inheritance in Java and OOP 作为起点了解更多详情 -
“我有一个问题” 太好了!你的问题是什么?如果这些词中隐藏着一个实际的问题,你能加一个“吗?”到最后了吗?如果不是,请考虑一个实际问题(不是要求)edit it into the question,并确保添加“?”。
标签: java mysql eclipse swing user-interface