JFrame加载故障

时间:2018-12-23 13:45:09

标签: java swing jframe jpanel loading

请有人帮助我提供我的代码。我在Eclipse中遇到奇怪的行为。

有时我的应用程序可以正确加载,并且大多数情况下我无法正确加载或完全不加载North和South JPanels。

加载后,只有当我调整JFrame边框的大小时,GUI才能正确显示,但是我想每次正确加载。我想我的代码有些麻烦,但是找不到。顺便说一句,我正在运行带有Java-11-openjdk-amd64的Linux Mint 19.1 Tarra。 这是Main类的代码:

package gui;


public class Main {

/**
 * @param args
 */
public static void main(String[] args) {
    new Dakijevstina();
}

}

这是GUI类代码:

package gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;

import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;


@SuppressWarnings("serial")
public class Dakijevstina extends JFrame{

Font font = new Font("TimesNew Roman", Font.PLAIN, 12);

public Dakijevstina() {
    initComponents();
}

public void initComponents() {
    //setting up JFrame     
    setTitle("Market garden financial software");
    setFont(font);
    setLayout(new BorderLayout());
    setSize(640, 480);
    setDefaultCloseOperation(Dakijevstina.EXIT_ON_CLOSE);
    setLocationByPlatform(true);
    setVisible(true);

    //setting up North JPanel
    JPanel pnlNorth = new JPanel(new FlowLayout(FlowLayout.LEFT));
    pnlNorth.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
    add(pnlNorth, BorderLayout.NORTH);

    //setting up StatusBar
    JPanel pnlSouth = new JPanel(new FlowLayout(FlowLayout.LEFT));
    pnlSouth.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
    add(pnlSouth, BorderLayout.SOUTH);

    //adding buttons to north JPanel
    //About
    JButton btnAbout = new JButton();
    JButton btnExit = new JButton();
    try {
        Image img = ImageIO.read(getClass().getResource("/images/about.png"));
        Image img2 = ImageIO.read(getClass().getResource("/images/exit.png"));
        btnAbout.setIcon(new ImageIcon(img));
        btnExit.setIcon(new ImageIcon(img2));
    } catch (Exception ex) {
        JOptionPane.showMessageDialog(this, ex);
    }
    btnAbout.setPreferredSize(new Dimension(40, 40));
    btnAbout.setMinimumSize(new Dimension(40, 40));
    btnAbout.setToolTipText("Information about author");
    btnExit.setPreferredSize(new Dimension(40, 40));
    btnExit.setMinimumSize(new Dimension(40, 40));
    btnExit.setToolTipText("Exit application");
    btnExit.addActionListener(e -> exitApp());
    pnlNorth.add(btnAbout);
    pnlNorth.add(btnExit);

    //adding StatusBar to south JPanel
    JLabel status = new JLabel("Welcome to Dakijevstina software");
    status.setFont(font);
    pnlSouth.add(status);
}

//event handlers
public void exitApp() {
    this.dispose();
}

这是我大部分时间得到的: unwanted behaviour

这就是它的样子: this is what I want

0 个答案:

没有答案