我尝试了几种方法,但仍未找到解决方案。我在一个框架中有一个jgraph,我想在该框架中也在特定位置添加一个Jbutton。但是当我运行程序时,我只得到其中一个,因为它们扩展到整个窗口。任何想法如何解决这个问题?
提前致谢。
public class GUIquery extends JFrame {
JFrame frame;
static JGraph jgraph;
final mxGraph graph = new mxGraph();
final mxGraphComponent graphComponent = new mxGraphComponent(graph);
public GUIquery() {
super("Test");
GraphD();
imgbtn();
}
public void GraphD() {
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try {
........
}catch {
........
} finally {
graph.getModel().endUpdate();
}
getContentPane().add(graphComponent);
}
public void imgbtn() {
JPanel jpanel = new JPanel();
jpanel.setSize(100, 100);
jpanel.setLocation(1200, 60);
JButton imgbtn = new JButton("Export as Image");
imgbtn.setSize(100, 100);
imgbtn.setLocation(1200, 60);
jpanel.add(imgbtn);
add(jpanel);
}
public static void main(String[] args) {
GUIquery frame = new GUIquery();
frame.setLayout(null);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 320);
frame.setVisible(true);
}
}
答案 0 :(得分:1)
不要使用null
布局。它们不可避免地会导致麻烦。
从您的代码段中无法确定您希望它们相对于彼此的位置,以下内容将按钮放在图表下方。
默认情况下,内容窗格使用BorderLayout。对于BorderLayout
,您需要在不同位置使用场所组件:
// the default position, but it does not hurt to be explicit
add(graph, BorderLayout.CENTER);
...
// and the panel
add(jpanel, BorderLayout.SOUTH);
如果定位不符合您的要求,请查看visual guide to layout managers以选择最适合您需求的布局管理器。
在按钮面板中,setLocation()
和setSize()
来电无效。面板的布局管理器负责设置按钮的边界。如果默认FlowLayout
不是您想要的,请使用该指南为该面板选择另一个。