我有一个JFrame
:的JFrame取决于看起来不同如何其加载
public class Help extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Help frame = new Help();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Help() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
}
}
如果我在Eclipse运行此我得到如下:
现在如果呼叫此从JButton
的ActionListener
内使用另一个JFrame
:
btnHelp.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Help frame = new Help();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
});
然后JFrame
负载看起来像这样:
这对我来说看起来很丑。为什么不是第一个样式加载时,我从另一个JFrame
s JButton ActionListener
初始化JFrame
?在我看来,我正在用两种加载方法运行完全相同的代码。
您可以将外观设置为任何你喜欢的。 –
在第二种情况下,新的JFrame与应用程序中的其他JFrame具有相同的外观和风格。所以看看你在哪里设置它的应用程序。是否有设置外观和感觉的线,与第一个示例中的类似? –
@DavidWallace修复。完善!我没有注意到主应用程序没有一个代码的感觉线。随意发布这个答案。 – Edd