我正在尝试在java中实现一个简单的接口,但它对代码更改没有响应,例如为组合框设置新位置不会改变它的位置。 我的代码是:
public class Interfata extends JFrame
{
static JFrame window= new JFrame("Aplicatie bancara");
static JButton persoana_button= new JButton("PERSOANE");
static JButton cont_button= new JButton("CONTURI");
public static void main( String[] args )
{
window.setBounds(10, 10, 300, 200);
JPanel panel_main= new JPanel();
window.add(panel_main);
cont_button.setBounds(90, 150, 100, 70);
panel_main.add(cont_button);
cont_button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
JFrame view = new JFrame("Accounts");
JPanel pane= new JPanel();
String[] account_type=
{"savings", "spending"};
JComboBox petList = new JComboBox(account_type);
petList.setSelectedIndex(1);
petList.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
});
petList.setSize(50, 50);
petList.setLocation(400,320);
pane.add(petList);
view.setDefaultCloseOperation(view.DISPOSE_ON_CLOSE);
view.setBounds(10,10,400,400);
view.add(pane);
view.setVisible(true);
}});
window.setVisible(true);
如代码所示,我的窗口设置为大小,大约400x400,我已经将位置设置为400,320的组合框,它应该将它放在框架之外,但它仍然卡在中间。
我正在使用eclipse neon oxygen。,并在Maven项目中编码。 在更改我的代码后,我收到了这条消息:
某些代码更改无法热交换到正在运行的虚拟机
我尝试重新启动eclipse,更改工作区位置并完全启动项目。然而,它仍然不会移动。
答案 0 :(得分:0)
您有一个正在运行的程序副本,它是在您进行更改之前启动的。此运行副本与Eclipse IDE的过程不同。
您需要停止此正在运行的副本,然后重新启动在磁盘上编译的新副本,但由于某种原因,无法将其修补到您已启动的副本中。
要查找正在运行的副本,您可能需要使用操作系统的进程列表并找到正确的程序(通常在程序命令行中包含单词' java')以终止。
一旦你杀了那个程序,你应该可以重新启动它,然后你应该看到上次成功编译时保存到磁盘的更改。
答案 1 :(得分:0)
这主要与LayoutManager相关:
setLocation(x,y)
,因此您看不到任何效果使用现有代码,如果将pane's
布局设置为null
即pane.setLayout(null)
,您肯定会获得所需的结果,但 null布局不是推荐的 即可。也许您可以考虑使用其他layouts SpringLayout
或GroupLayout
但这需要IDE,因为手动编码会很麻烦。