java – 将面板添加到框架,但在运行应用程序时不显示
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 将面板添加到框架,但在运行应用程序时不显示,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4002字,纯文字阅读大概需要6分钟。
内容图文
![java – 将面板添加到框架,但在运行应用程序时不显示](/upload/InfoBanner/zyjiaocheng/723/2f23671bafa44bcaa99d6c7ae4415bbd.jpg)
参见英文答案 > Why shouldn’t I call setVisible(true) before adding components? 2个
我正在创建一个应用程序,框架中有两个面板,顶部有一个菜单栏.菜单栏显示正常,到目前为止设置的任何操作都有效,但其他两个面板从未出现.
我已经尝试回溯所有将它们添加到框架上的面板和线条,并且找不到任何错误.
在drawForm()方法中没有显示的两个窗格中的第一个在我添加一些组件之前显示,但是因为即使我再次删除组件也没有显示.
这是类框架:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Frame {
public static void drawFrame(){
// Create frame
JFrame frame = new JFrame("Frame");
// Set default close operation
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Set frame attributes
frame.setVisible(true);
frame.setSize(400, 300);
frame.setResizable(false);
// Set Layout
frame.setLayout(new BorderLayout());
// Add Components
frame.add(drawMenuBar(), BorderLayout.NORTH);
JPanel twinPane = new JPanel();
frame.add(twinPane, BorderLayout.CENTER);
twinPane.setLayout(new GridLayout(1, 2));
twinPane.add(drawForm());
twinPane.add(drawInfo());
} // Ends method drawFrame
public static JMenuBar drawMenuBar(){
//Create menu structure
JMenuBar menu = new JMenuBar();
JMenu file = new JMenu("File");
JMenuItem clear = new JMenuItem("Clear");
JMenuItem calculate = new JMenuItem("calculate");
JMenuItem exit = new JMenuItem("Exit");
JMenu help = new JMenu("Help");
JMenuItem about = new JMenuItem("About");
JMenuItem instructions = new JMenuItem("Instructions");
//Add menu items to repective area of menu tree
menu.add(file);
file.add(clear);
file.add(calculate);
file.add(exit);
menu.add(help);
help.add(about);
help.add(instructions);
//Add ActionListener
exit.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
MainApp app = new MainApp();
app.exit();
}
});
//Set Return
return menu;
} // Ends method drawMenuBar
public static JPanel drawForm(){
//Set panel with layout and border
JPanel form = new JPanel();
form.setBorder(BorderFactory.createTitledBorder("Form"));
form.setLayout(new BoxLayout(form, BoxLayout.PAGE_AXIS));
//Create field and labels for form panel and add to form panel
JLabel label1 = new JLabel("text1");
form.add(label1);
JTextField textfield1 = new JTextField(5);
form.add(textfield1);
JLabel label2 = new JLabel("text2");
form.add(label2);
JTextField textfield2 = new JTextField(5);
form.add(textfield2);
JButton calc = new JButton("calculate");
form.add(calc);
JTextField result = new JTextField(5);
form.add(result);
//Set return
return form;
} // Ends method drawForm
public static JPanel drawInfo(){
//Set Panel with layout and border
JPanel info = new JPanel();
info.setBorder(BorderFactory.createTitledBorder("Information"));
//Set Return
return info;
} // Ends method drawInfo
} // Ends class Frame
主要方法是在另一个类中,但类Frame创建GUI.框架和菜单栏完美配合,但之后的所有内容都无效.
我感谢任何帮助,谢谢
玩笑
解决方法:
将组件添加到容器时,可能需要使容器层次结构无效,以使它们变得可见…
在您添加任何内容之前设置框架时,问题就是突出显示…
public static void drawFrame(){
// Create frame
JFrame frame = new JFrame("Frame");
// Set default close operation
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Set frame attributes
// !! Don't do this here...
//frame.setVisible(true);
// ... IMHO, better to use pack...
//frame.setSize(400, 300);
frame.setResizable(false);
// Set Layout
frame.setLayout(new BorderLayout());
// Add Components
frame.add(drawMenuBar(), BorderLayout.NORTH);
JPanel twinPane = new JPanel();
frame.add(twinPane, BorderLayout.CENTER);
twinPane.setLayout(new GridLayout(1, 2));
twinPane.add(drawForm());
twinPane.add(drawInfo());
// !! Do it here instead...
frame.pack();
frame.setVisible(true);
} // Ends method drawFrame
内容总结
以上是互联网集市为您收集整理的java – 将面板添加到框架,但在运行应用程序时不显示全部内容,希望文章能够帮你解决java – 将面板添加到框架,但在运行应用程序时不显示所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。