为了减少代码,我会找出与问题无关的代码,例如addActionListener();
等。
我的主要课程是public class TF2_Account_Chief
我有我的主Jframe f;
及其内容:
private static JFrame f = new JFrame("TF2 Account C.H.I.E.F.");
private JLabel runnableTogetherLabel = new JLabel("How many idlers would you like to run at a time?");
private static JTextField runnableTogetherInput = new JTextField();
private JButton runButton = new JButton("Run!");
private JButton stopButton = new JButton("Stop!");
private JButton resetButton = new JButton("Reset!");
private JButton exitButton = new JButton("Exit!");
我设置了所有内容的属性:
public void launchFrame() {
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
f.add(runnableTogetherInput);
f.add(runnableTogetherLabel);
f.add(runButton);
f.add(stopButton);
f.add(resetButton);
f.add(exitButton);
f.setSize(625, 500);
runnableTogetherInput.setSize(35, 20);
runnableTogetherLabel.setSize(275, 25);
runButton.setSize(60, 25);
stopButton.setSize(65, 25);
resetButton.setSize(70, 25);
exitButton.setSize(60, 25);
f.setLocation(0, 0);
runnableTogetherInput.setLocation(285, 3);
runnableTogetherLabel.setLocation(5, 0);
runButton.setLocation(330, 0);
stopButton.setLocation(395, 0);
resetButton.setLocation(465, 0);
exitButton.setLocation(540, 0);
}
然后我有main()
方法:
public static void main(String[] args) throws IOException {
TF2_Account_Chief gui = new TF2_Account_Chief();
gui.launchFrame();
Container contentPane = f.getContentPane();
contentPane.add(new TF2_Account_Chief());
}
然后我的第二个JFrame iF
没有正确显示内容:
private void invalidInput() {
JFrame iF = new JFrame("Invalid Input!");
JLabel iL = new JLabel("The input you have entered is invalid!");
JButton iB = new JButton("Exit!");
Container contentPane2 = iF.getContentPane();
contentPane2.add(new TF2_Account_Chief());
iF.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
iF.pack();
iF.setVisible(true);
iF.add(iL);
iF.add(iB);
iF.setSize(500, 300);
iL.setSize(125, 25);
iB.setSize(60, 25);
iF.setLocation(0, 0);
iL.setLocation(0, 15);
iB.setLocation(0, 45);
}
现在,JFrame iF
方法在调用invalidInput()
方法时启动,但您无法看到,因为该部分代码与问题无关。重要的是JFrame iF
已启动。
新框架如下所示:
有关内容无法正常显示的任何想法?
(通过不正确,我的意思是JButton iB
占据了整个框架,框架是浅蓝色而不是正常的灰色。)
答案 0 :(得分:9)
您使用绝对位置而不使用null
布局,这就是您看到一个大按钮的原因。
要查看每个组件,您必须使用
iF.setLayout(null);
但这不是一个好习惯,我建议您学习how to use Layouts并将所有工作留给布局管理员
答案 1 :(得分:3)
JFrame
的默认布局为 BorderLayout ,其中有“5”个位置可以将您的组件放到
因此,iF.add(component)
会将组件添加到CENTER
,您可以像这样指定位置:
iF.add(component, BorderLayout.PAGE_END);
//You can also put PAGE_START, LINE_START, LINE_END, CENTER
听取我的建议并阅读有关BorderLayout的更多信息,因为如果您拒绝学习布局管理器,您可能会转到Absolute Positioning
( null 布局)这不是一个好的方式,不得使用。