gpt4 book ai didi

java - 如何在框架中显示带有组件的面板

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:41:13 25 4
gpt4 key购买 nike

为什么我的 JFrame“框架”显示空窗口,而它应该在下面给我 3 个菜单按钮和我自己绘制的 JComponent?我在这里错过了什么?

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

public class Eyes extends JFrame {

public static void main(String[] args) {
final JFrame frame = new JFrame("Eyes");
frame.setPreferredSize(new Dimension(450, 300));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel players = new JPanel(new GridLayout(1, 3));
players.add(new JButton("Eyes color"));
players.add(new JButton("Eye pupil"));
players.add(new JButton("Background color"));

JPanel eyes = new JPanel();
eyes.add(new MyComponent());

JPanel content = new JPanel();
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
content.add(players);
content.add(eyes);

frame.getContentPane();
frame.pack();
frame.setVisible(true);
}
}

class MyComponent extends JComponent {

public MyComponent(){

}

@Override
public void paint(Graphics g) {
int height = 120;
int width = 120;
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
BasicStroke bs = new BasicStroke(3.0f);
g2d.setStroke(bs);
g2d.setColor(Color.yellow);
g2d.fillOval(200, 200, height, width);
g2d.setColor(Color.black);
g2d.drawOval(60, 60, height, width);
}
}

最佳答案

你的线路:

    frame.getContentPane();

除了访问框架的内容面板外什么都不做。您应该设置您的内容 Pane ,而不是获取内容 Pane ,如下所示:

    frame.setContentPane(content);

编辑:

或者,正如@trashgod 指出的那样,您可以使用 getContentPane 方法访问默认内容 Pane 并将您的 content 组件添加到其中:

    frame.getContentPane().add(content);

关于java - 如何在框架中显示带有组件的面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2933412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com