Swing 和 AWT:ContentPane 项目未显示在 JFrame 中
Swing & AWT: ContentPane items not showing in JFrame
我正在创建一个基本的 Java Swing 应用程序,但我的内容窗格出现问题,因为它没有显示我的对象。
这是我的主要 class 这将在未来调用其他 classes 并且只是调用 Frame.java:
public class Main
{
public static void main(String[] args)
{
System.out.println("HI");
Frame frameObject = new Frame();
frameObject.main();
}
}
这是我创建框架的框架 class:
import javax.swing.*;
import java.awt.*;
public class Frame
{
public static void main()
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new MainFrame("Warlock of Firetop Mountain");
//Implementing Toolkit to allow computer to get dimensions of screen and assign them to two int values
Toolkit tk = Toolkit.getDefaultToolkit();
int xsize = (int) tk.getScreenSize().getWidth();
int ysize = (int) tk.getScreenSize().getHeight();
frame = new JFrame("Warlock of Firetop Mountain");
frame.setTitle("Warlock of Firetop Mountain");
frame.setSize(new Dimension(xsize, ysize));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
这是我的主要Frame.java我存储组件的地方:
public class MainFrame extends JFrame
{
public MainFrame(String title)
{
super(title);
setLayout(new BorderLayout());
//Components - Buttons
JButton saveButton =new JButton("Save");
JButton loadButton =new JButton("Load");
JButton optionsButton = new JButton("Options");
JButton inventoryButton =new JButton("Inventory");
Container buttonsContainer = getContentPane();
buttonsContainer.add(saveButton, BorderLayout.LINE_START);
buttonsContainer.add(loadButton, BorderLayout.CENTER);
buttonsContainer.add(optionsButton,BorderLayout.CENTER);
buttonsContainer.add(inventoryButton,BorderLayout.AFTER_LINE_ENDS);
//Components - Enter Button
JButton enterButton = new JButton("Enter");
// /Components - ComboBox
JComboBox pageTurner = new JComboBox();
//Components = JTextArea
JTextArea currentText = new JTextArea();
}
}
frame = new JFrame("Warlock of Firetop Mountain");
为什么要用新的 JFrame 实例重置框架?你不是已经用MainFrame设置了吗?
您正在做的是将框架分配给包含所有组件的新 MainWindow。但是随后,您将框架重新分配给新的 JFrame,默认情况下 JFrame 没有组件。
我正在创建一个基本的 Java Swing 应用程序,但我的内容窗格出现问题,因为它没有显示我的对象。
这是我的主要 class 这将在未来调用其他 classes 并且只是调用 Frame.java:
public class Main
{
public static void main(String[] args)
{
System.out.println("HI");
Frame frameObject = new Frame();
frameObject.main();
}
}
这是我创建框架的框架 class:
import javax.swing.*;
import java.awt.*;
public class Frame
{
public static void main()
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new MainFrame("Warlock of Firetop Mountain");
//Implementing Toolkit to allow computer to get dimensions of screen and assign them to two int values
Toolkit tk = Toolkit.getDefaultToolkit();
int xsize = (int) tk.getScreenSize().getWidth();
int ysize = (int) tk.getScreenSize().getHeight();
frame = new JFrame("Warlock of Firetop Mountain");
frame.setTitle("Warlock of Firetop Mountain");
frame.setSize(new Dimension(xsize, ysize));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
这是我的主要Frame.java我存储组件的地方:
public class MainFrame extends JFrame
{
public MainFrame(String title)
{
super(title);
setLayout(new BorderLayout());
//Components - Buttons
JButton saveButton =new JButton("Save");
JButton loadButton =new JButton("Load");
JButton optionsButton = new JButton("Options");
JButton inventoryButton =new JButton("Inventory");
Container buttonsContainer = getContentPane();
buttonsContainer.add(saveButton, BorderLayout.LINE_START);
buttonsContainer.add(loadButton, BorderLayout.CENTER);
buttonsContainer.add(optionsButton,BorderLayout.CENTER);
buttonsContainer.add(inventoryButton,BorderLayout.AFTER_LINE_ENDS);
//Components - Enter Button
JButton enterButton = new JButton("Enter");
// /Components - ComboBox
JComboBox pageTurner = new JComboBox();
//Components = JTextArea
JTextArea currentText = new JTextArea();
}
}
frame = new JFrame("Warlock of Firetop Mountain");
为什么要用新的 JFrame 实例重置框架?你不是已经用MainFrame设置了吗?
您正在做的是将框架分配给包含所有组件的新 MainWindow。但是随后,您将框架重新分配给新的 JFrame,默认情况下 JFrame 没有组件。