繁体   English   中英

我正在尝试创建一个小的GUI应用程序,但是JFrame的内容没有显示在屏幕上。 如何修复我的代码?

[英]I'm attempting to create a small GUI application, but the contents of the JFrame are not showing on screen. How can I fix my code?

到目前为止,我一直在用Java开发(非常)小的GUI应用程序。 总的来说,我对Swing和Java还是陌生的,但是到目前为止,我已经能够按照我想要的方式来使一切工作。 但是,在清理代码后,当我运行该程序时,仅出现窗口边框。 我在做什么错,我该如何修正我的代码? 提前谢谢!

为了节省空间,我将Pastebin链接到了我所有的类(除Main之外)。

主班

package me.n3rdfall.ezserver.main;

public class Main {

    public static GUI g = new GUI();

    public static void main(String[] args) {

        g.showWindow(800, 500);

    }

}

GUI类

http://pastebin.com/gDMipdp1

ButtonListener类别

http://pastebin.com/4XXm70AD

编辑:看来,直接在“框架”上调用removeAll()实际上删除了除我添加的内容以外的其他重要内容。 通过在getContentPane()上调用removeAll(),此问题已解决。

快速攻克:删除removeAll()函数。

public void homePage() {
//      frame.removeAll();
//      mainpanel.removeAll();
//      topbar.removeAll();

我不确定您要达到的目标,但这至少会显示一些项目。 如果您是我,我将通过扩展JFrame来重建此GUI。 这将使您的代码更易于阅读。

我也认为您想要通过按钮实现的是切换布局,您可以通过使用CardLayout更轻松地完成此操作

示例(与代码无关,只是为了演示):

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Example extends JFrame implements ActionListener {
    private JButton leftButton;
    private JButton rightButton;

    private CardLayout cardLayout = new CardLayout();
    JPanel cards = new JPanel(cardLayout);
    final static String LEFTPANEL = "LEFTPANEL";
    final static String RIGHTPANEL = "RIGHTPANEL";
    JPanel card1;
    JPanel card2;

    public Example()    {
        JPanel topPanel = new JPanel();
        addButtons(topPanel);

        add(topPanel, BorderLayout.NORTH);
        add(cards, BorderLayout.CENTER);

     //Initiates the card panels

        initCards();

        setTitle("My Window");
        setSize(300, 300);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    private void initCards() {
        card1 = new JPanel();
        card2 = new JPanel();
        card1.setBackground(Color.black);
        card2.setBackground(Color.red);

        cards.add(card1, LEFTPANEL);
        cards.add(card2, RIGHTPANEL);
    }

    private void addButtons(Container con)  {
        leftButton = new JButton("Left Button");
        leftButton.addActionListener(this);
        rightButton = new JButton("Right Button");
        rightButton.addActionListener(this);

        con.add(leftButton, BorderLayout.WEST);
        con.add(rightButton, BorderLayout.EAST);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource().equals(leftButton))    {
            //Change cardlayout
            cardLayout.show(cards, LEFTPANEL);      
        } else if(e.getSource().equals(rightButton))    {
            //Change cardlayout
            cardLayout.show(cards, RIGHTPANEL);     
        }
    }

    public static void main(String[] args) {
        new Example();
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM