该组件未出现在西边界布局中
the component does not appear in the west border layout
我有这个代码
package com.company;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Alarm extends JFrame {
JFrame frame = new JFrame("Java Alarm Clock");
JMenuBar menuBar = new JMenuBar();
JMenu clock = new JMenu("Clock");
JMenu alarm = new JMenu("Alarm");
JMenu help = new JMenu("Help");
public Alarm() {
super("Java Alarm Clock");
getContentPane().setBackground(new Color(204,204,255));
setLayout(new BorderLayout());
setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
setSize(770,470);
setVisible(true);
add(new pclock() , BorderLayout.WEST);
add(menuBar , BorderLayout.NORTH);
menuBar.setBackground(new Color(204,204,255));
menuBar.add(clock);
menuBar.add(alarm);
menuBar.add(help);
}
class pclock extends JPanel {
public void paintComponent(Graphics g) {
setBackground(new Color(204,204,255));
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillOval(40, 100, 180, 180);
}
}
public static void main(String[] args) {
new Alarm();
}
}
我想要输出像这样的图片
但是当我运行代码圆圈没有出现
它确实只在我更改此代码时出现
add(new pclock() , BorderLayout.WEST);
到
add(new pclock());
那么如何让它像那个图片一样出现在左侧呢?
谢谢
Class 名称应该以大写字符开头。您的自定义 class 命名不正确。
BorderLayout 的 WEST 区域将遵循添加到其中的任何组件的宽度。您的自定义组件的大小为 (0, 0),因此没有可显示的内容。您需要将自定义 class 的 getPreferredSize()
方法覆盖为 return 时钟的大小。
阅读有关 Custom Painting 的 Swing 教程部分,了解更多信息和工作示例。
我有这个代码
package com.company;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Alarm extends JFrame {
JFrame frame = new JFrame("Java Alarm Clock");
JMenuBar menuBar = new JMenuBar();
JMenu clock = new JMenu("Clock");
JMenu alarm = new JMenu("Alarm");
JMenu help = new JMenu("Help");
public Alarm() {
super("Java Alarm Clock");
getContentPane().setBackground(new Color(204,204,255));
setLayout(new BorderLayout());
setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
setSize(770,470);
setVisible(true);
add(new pclock() , BorderLayout.WEST);
add(menuBar , BorderLayout.NORTH);
menuBar.setBackground(new Color(204,204,255));
menuBar.add(clock);
menuBar.add(alarm);
menuBar.add(help);
}
class pclock extends JPanel {
public void paintComponent(Graphics g) {
setBackground(new Color(204,204,255));
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillOval(40, 100, 180, 180);
}
}
public static void main(String[] args) {
new Alarm();
}
}
我想要输出像这样的图片
但是当我运行代码圆圈没有出现 它确实只在我更改此代码时出现
add(new pclock() , BorderLayout.WEST);
到
add(new pclock());
那么如何让它像那个图片一样出现在左侧呢? 谢谢
Class 名称应该以大写字符开头。您的自定义 class 命名不正确。
BorderLayout 的 WEST 区域将遵循添加到其中的任何组件的宽度。您的自定义组件的大小为 (0, 0),因此没有可显示的内容。您需要将自定义 class 的
getPreferredSize()
方法覆盖为 return 时钟的大小。
阅读有关 Custom Painting 的 Swing 教程部分,了解更多信息和工作示例。