【发布时间】:2016-02-28 12:00:55
【问题描述】:
我创建了自己的面板版本,因此我可以创建一些可拖动的表格,但目前没有任何内容添加到我创建的面板中
面板类:
import javax.swing.*;
import java.awt.event.*;
import java.awt.Dimension;
import java.awt.Point;
public class Workspace extends JPanel implements MouseListener,MouseMotionListener{
private JTable t;
private DatabaseHandler d;
public Workspace(DatabaseHandler d ){
super();
this.d = d;
setPreferredSize(new Dimension(1000, 1000));
this.setLayout(null);
addMouseListener(this);
addMouseMotionListener(this);
}
public void load(String table){
t = new JTable(d.getTable(table));
//JScrollPane js=new JScrollPane(t);
this.add(t);
}
}
调用它的代码:
public class Display{
private JPanel leftPanel = new JPanel(new BorderLayout());
public JList list;
public JFrame frame;
private DatabaseHandler d = new DatabaseHandler("imdb");
private Workspace w = new Workspace(d);
public Display(){
//create the window
frame = new JFrame("FYP - Database Refactoring");
frame.getContentPane().add(w, BorderLayout.CENTER);
frame.setSize(1000,1000);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
list = new JList(d.getTableNames());
list.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
JList l = (JList)e.getSource();
w.load((String)l.getSelectedValue());
frame.setVisible(true);
}
});
leftPanel.add(list);
JLabel l = new JLabel("workbench");
w.add(l);
frame.getContentPane().add(leftPanel, BorderLayout.LINE_START);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
new Display();
}
}
如有任何帮助,将不胜感激
【问题讨论】:
-
使用空布局是个坏主意。你应该使用a real layout manager
-
我知道,我现在正在测试中添加一个布局
-
事实上,空布局把你搞砸了。 @resueman:你应该回答这个问题。 @ 有点不知所措,那么这是一个 bad 测试,又完全把你搞砸了。您的 JTable 也应该保存在 JScrollPane 中。