我遇到的问题对我来说很奇怪,因为我正在一步一步地做正确的事(在我看来),最后当我说我完成了我的程序的一部分时,它似乎取笑了我。实际的问题是在我创建的GUI中我使用了JPanel,然后我将它放入JTabbedPane中,我最终将其放入JFrame中。一切都很好,并且在没有的时候分开工作。我知道这听起来很奇怪,但是在运行程序后,我得到了我想要的东西(带有标签窗格的框架,其中包含一些内容),然后当我再次运行它时,它要么再显示正确的东西,要么只是空框架。最糟糕的是,它是如此随机,我不知道什么是错的,我甚至不知道我应该谷歌究竟应该找到它。代码是:
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.*;
public class GUI extends JFrame {
JFrame frame = new JFrame("WakeOnLan script generator");
JPanel panel1 = new JPanel(null);
JTextArea text; //= new JTextArea("test");
JScrollPane scroll = new JScrollPane();
JButton but = new JButton("test");
JTabbedPane tab = new JTabbedPane();
public GUI() {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int w = frame.getSize().width;
int h = frame.getSize().height;
int x = (dim.width-w)/3;
int y = (dim.height-h)/4;
frame.setSize(500,500);
frame.setLocation(x,y);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLayout(null);
createTab1();
tab.addTab("Tab 1", panel1);
tab.setVisible(true);
tab.setBounds(0, 0, 500, 500);
frame.add(tab);
}
public void createTab1(){
text = new JTextArea("test");
text.setVisible(true);
scroll.setViewportView(text);
scroll.setBounds(10,10,465,300);
panel1.setLayout(null);
panel1.add(scroll);
panel1.setVisible(true);
panel1.setSize(500,500);
//panel.setBackground(Color.blue);
}
}
然后我在其他类的main方法中运行它:
public class GUIStarter {
public static void main(String[] args) {
GUI start = new GUI();
}
}
那么有人可以给我一个答案或只是一个提示吗? 谢谢。
答案 0 :(得分:2)
在将所有组件添加到JFrame后,您应该致电frame.setVisible(true)
。所以尝试将它移动到构造函数的末尾。
或者,您可以在添加所有组件后调用frame.validate()
。