我是JAVA编程的新手,我试图在下面进行内存修改GUI程序是代码。我的JTextField对于如何解决这个问题的建议太大了?如果找到另一种方法来完成上述任务,我也将不胜感激。谢谢你的时间
JMenuBar menubar;
JMenu data,array,linkedlist,strings,stacks,tree,graphs,queues;
JMenuItem dtypeint,dtypefloat,dtypechar;
public GUI(){
super("Data Structures Assignment");
System.out.println("Select the Above mentioned Options for Memory Modification");
setLayout(new FlowLayout());
menubar = new JMenuBar();
add(menubar);
data = new JMenu("Basic Data Types");
menubar.add(data);
array = new JMenu("Arrays");
menubar.add(array);
linkedlist = new JMenu("Linked List");
menubar.add(linkedlist);
strings = new JMenu("Strings");
menubar.add(strings);
stacks = new JMenu("Stacks");
menubar.add(stacks);
tree = new JMenu("Tree");
menubar.add(tree);
graphs = new JMenu("Graphs");
menubar.add(graphs);
queues = new JMenu("Queues");
menubar.add(queues);
dtypeint = new JMenuItem("Integer");
data.add(dtypeint);
dtypefloat = new JMenuItem("Float");
data.add(dtypefloat);
dtypechar = new JMenuItem("Character");
data.add(dtypechar);
setJMenuBar(menubar);
thehandler handler = new thehandler();
dtypeint.addActionListener(handler);
dtypefloat.addActionListener(handler);
dtypechar.addActionListener(handler);
}
private class thehandler implements ActionListener{
public void actionPerformed(ActionEvent event){
if(event.getSource()==dtypeint){
setLayout(new GridLayout());
Frame F = new JFrame();
F.setVisible(true);
F.setSize(200,200);
final JTextField item1;
item1 = new JTextField("Word Size");
item1.setColumns(15);
F.add(item1);
}
}
}
}
答案 0 :(得分:1)
JFrame的默认布局是BoderLayout。默认情况下,组件将添加到BorderLayout的CENTER中,并将调整大小以占用所有可用空间。因此,您需要使用适当的布局管理器组合来获得所需的效果。
也许有点像:
//F.add(item1);
JPanel panel = new JPanel(); // uses FlowLayout by default
panel.add(item1);
F.add(panel, BorderLayout.NORTH);
阅读Layout Managers上的Swing教程,了解更多信息和示例。
答案 1 :(得分:0)
F.setSize(200,200)
。F.add(item1)
行之后,添加F.pack()
。F.setVisible(true)
行,使其位于F.pack()
行之后;在完成构建之前,不应该显示框架。 pack()
方法设置窗口的大小以适应其包含的组件的首选大小。