无法显示椭圆形

问题描述 投票:0回答:1

我是新来的。一直在阅读永恒的问题和答案。最近,我有时间开始学习Java,并且我非常享受这个过程。直到我开始写一些代码。被卡住正在杀死我。因此,我来​​寻求关于极其简单的建议,但我无法破解。

下面的代码尝试创建框架,将其最大化并在其中放置元素。我只是在鬼混。首先是button1,我尝试更改其大小(因此我将其放入FlowLayout中)。然后在mainPanel中单击一个按钮,即可尝试。然后是椭圆形。我尝试了2个小时才能显示椭圆形,但这是不可能的。当我发现“ drawOval”时,我以为是,但这没什么区别。并以为我正在计划button1创建移动球。我是如此,离那很远。

请,为什么傻的椭圆形拒绝展示自己。帮助。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MainClass {
    JFrame frame = new JFrame();
    JPanel mainPanel = new JPanel();
    JPanel southPanel = new JPanel();
    JButton button1 = new JButton("Button1");
    JButton button2 = new JButton("Button2");
    Oval oval = new Oval();

    public static void main(String[] args) {
        MainClass program = new MainClass();
        program.go();
    }

    public void go() {
        buildGUI();
    }

    public void buildGUI() {
        button1.setBorder(BorderFactory.createMatteBorder(2,2,2,2, Color.BLACK));
        button1.addActionListener(new Button1Listener());

        frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
        button1.setPreferredSize(new Dimension(200, 50));
        frame.getContentPane().add(BorderLayout.SOUTH, southPanel);
        southPanel.add(button1);
        mainPanel.add(button2);
        mainPanel.add(oval);
        frame.setSize(400, 400);
        frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    class Button1Listener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent event) {
            //What the button will do.
        }
    }
}

和椭圆形部分

import java.awt.*;
import javax.swing.*;

public class Oval extends JPanel {
    public void paintComponent(Graphics g) {
        g.setColor(Color.orange);
        g.fillOval(20, 50, 100, 100);
    }
}
java swing
1个回答
0
投票

JPanel默认使用FlowLayout。由于您的Oval类不提供任何大小提示,因此将其设置为默认大小0x0

首先将您的班级更新为类似...

public class Oval extends JPanel {

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(120, 150);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.orange);
        g.fillOval(20, 50, 100, 100);
    }
}

创建移动球。

好吧,您可能想看看:

© www.soinside.com 2019 - 2024. All rights reserved.