所以我有3个JFrame。 JFrame 1(aka opts)用于输入一些变量。在OK上,它创建JFrame 2(也就是视图,图形查看框架)。在构造函数中,即时创建JFrame 3(也称为管理器,用于在图形视图中循环)。
我希望它们与JFrame.setDefaultLookAndFeelDecorated(true)
(从现在开始称为“它”)一样装饰在Windows上。
一些不同的案例:
它究竟是如何运作的?我想知道为什么会发生这种情况。
编辑:我无法复制案例4,但仍有一些事情发生,我不明白。尝试评论一些“它”。它会给出一些奇怪的结果。
package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Frame1 extends JFrame {
public Frame1() {
JFrame.setDefaultLookAndFeelDecorated(true);
Frame1.setOptions(this);
JButton b1 = new JButton("hi");
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
makeFrame2(2);
}
});
this.add(b1);
}
public void makeFrame2(int x) {
this.dispose();
new Frame2(x);
}
public static void setOptions(JFrame f) {
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(250, 250);
f.setEnabled(true);
f.setVisible(true);
}
public static void main(String[] args) {
new Frame1();
}
}
package test;
import javax.swing.JFrame;
public class Frame3 extends JFrame {
Frame2 link;
SomeClass sc;
public Frame3(Frame2 link) {
JFrame.setDefaultLookAndFeelDecorated(true);
Frame1.setOptions(this);
this.link = link;
sc = new SomeClass(25);
}
}
package test;
import javax.swing.JFrame;
public class SomeClass {
int x;
public SomeClass(int x) {
JFrame.setDefaultLookAndFeelDecorated(true);
this.x = x;
}
}
package test;
import javax.swing.JFrame;
public class Frame2 extends JFrame {
public Frame2(int x) {
JFrame.setDefaultLookAndFeelDecorated(true);
Frame1.setOptions(this);
new Frame3(this);
}
}
答案 0 :(得分:0)
根据oracle java文档,setDefaultLookAndFeelDecorated
更改了所有新创建的JFrame的参数,所有现有的JFrame都保持不变。