Java Swing元素在每次运行时都会更改
所以我用java的swing库编写了一个程序。我制作了一个绘制方程图的程序,如果相关的话,这里是主要的方法:Java Swing元素在每次运行时都会更改,java,swing,jlabel,positioning,absolutelayout,Java,Swing,Jlabel,Positioning,Absolutelayout,所以我用java的swing库编写了一个程序。我制作了一个绘制方程图的程序,如果相关的话,这里是主要的方法: public static void main(String[] args) throws Exception { JFrame frame= new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setLayo
public static void main(String[] args) throws Exception {
JFrame frame= new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLayout(new GridLayout(1,2));
GraphPanel gp = new GraphPanel();
GraphPanel gp2 = new GraphPanel();
//gp.functs.add(new Function(Phrase.createPhrase("2(25-x^2)^(1/2)")));
//gp.functs.add(new Function(Phrase.createPhrase("-1.1((25-x^2)^(1/2))")));
gp.functs.add(new Function(Phrase.createPhrase("x^2")));
//gp.functs.add(new Function(Phrase.createPhrase("-4/x^2+6")));
gp2.functs.add(new Function(Phrase.createPhrase("sinx")));
frame.add(gp);
frame.add(gp2);
frame.pack();
frame.setSize(800, 800);
//gp.setBorder(BorderFactory.createLineBorder(Color.RED));
gp.setBounds(100, 100, 700, 700);//I WANT THIS TO ALWAYS RUN
}
我在不改变任何部分的情况下运行了两次该程序的试运行,结果如下:
下一次我运行它时:
如果相关,GraphPanel属于JLabel类型。
我知道如果我使用空的绝对LayoutManager,它将始终有效。但我只是想知道为什么swing中有这么多不一致的地方。我以前注意到过类似的东西,但我认为这只是程序中的一些错误。为什么会这样?
提前谢谢 - 首先移动
到frame.setVisible(true)
方法的末尾main
- 这
gp.setBounds(100100700700)代码>是无意义的,因为
受布局管理器的控制(gp
)GridLayout
- 同时使用
和path
没有任何意义,setSize
通常是一个更安全的选项,但这取决于组件是否正确覆盖pack
getPreferredSize
JFrame
物理连接到本机对等机的方式,当您到达gp.setBounds
时,该帧可能在屏幕上可见,也可能不可见
此外,由于您在“主”线程而不是事件调度线程中完成所有工作,因此您在它们之间运行竞争条件的风险,有关更多详细信息,请参阅
Swing非常灵活,当你做错事(或以错误的方式做事)时,它也是不可原谅的。- 首先移动
到frame.setVisible(true)
方法的末尾main
- 这
gp.setBounds(100100700700)代码>是无意义的,因为
受布局管理器的控制(gp
)GridLayout
- 同时使用
和path
没有任何意义,setSize
通常是一个更安全的选项,但这取决于组件是否正确覆盖pack
getPreferredSize
JFrame
物理连接到本机对等机的方式,当您到达gp.setBounds
时,该帧可能在屏幕上可见,也可能不可见
此外,由于您在“主”线程而不是事件调度线程中完成所有工作,因此您在它们之间运行竞争条件的风险,有关更多详细信息,请参阅
Swing非常灵活,当你做错事(或以错误的方式做错事)时,它也是不可原谅的。但是为什么它一次奏效,另一次却不行呢?它应该一直工作还是永远不工作?请参阅更新,您可能在“主”线程和事件调度线程(除其他外)之间存在竞争条件,这使得主方法可能在实际显示帧之前达到设置的界限……好的,谢谢!但为什么一次成功,另一次却没有?它应该一直工作还是永远不工作?请参阅更新,您可能在“主”线程和事件调度线程(除其他外)之间存在竞争条件,这使得主方法可能在实际显示帧之前达到设置的界限……好的,谢谢!