【发布时间】:2013-12-13 04:23:03
【问题描述】:
对于学校,我正在开发一个 Java GUI 程序来存储一些管理数据。
现在我想使用 JTextField 将我的数据库(mysql)中的事件数据显示到 JPanel 中, 我的问题是我无法固定 JTextField 的大小,因为它总是占用很多地方(见图)
图片:http://postimg.org/image/5pcklo5n1/
这是我的代码,有人给点建议吗? (我是java新手):
public void editEvent() {
JFrame frEventEdit = new JFrame ("Event Edit Menu");
frEventEdit.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frEventEdit.setVisible(true);
frEventEdit.setSize(700, 500);
//JPanel for displaying data
JPanel pnData = new JPanel();
pnData.setLayout(new BoxLayout(pnData, BoxLayout.PAGE_AXIS));
pnData.add(Box.createRigidArea(new Dimension(0,5)));
pnData.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
pnData.setAutoscrolls(true);
Statement stmt;
try {
stmt = mySql.createStatement();
ResultSet rs = stmt.executeQuery("SELECT name, date, time, type, address, representative FROM events " ) ;
while (rs.next() == true){
System.out.println(rs.getString("name")+" "+rs.getString("date")+" "+rs.getString("time")+" "+rs.getString("type")+" "+rs.getString("address")+" "+rs.getString("representative"));
final JTextField txtEventList = new JTextField(rs.getString("name")+" "+rs.getString("date")+" "+rs.getString("time")+" "+rs.getString("type")+" "+rs.getString("address")+" "+rs.getString("representative"));
pnData.add(txtEventList, BorderLayout.CENTER);
}
} catch (SQLException e) {
e.printStackTrace();
}
JScrollPane scroller = new JScrollPane(pnData);
frEventEdit.add(scroller);
frEventEdit.setLocationRelativeTo(null);
}
提前致谢
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发布SSCCE(通过硬编码一些数据来排除数据库。2)提供 GUI 的 ASCII 艺术,因为它应该以最小的尺寸出现并且(如果可调整大小) 具有额外的宽度/高度。 3)
while (rs.next() == true){建议使用JTable而不是许多组件。
标签: java swing jpanel jtextfield layout-manager