我是新来的。一直在阅读永恒的问题和答案。最近,我有时间开始学习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);
}
}
答案 0 :(得分: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);
}
}
创建移动球。
好吧,您可能想看看: