[英]draw rectangle in Jpanel
我試圖在java中進行GUI編程,並希望在Jpanel中繪制一個矩形。 代碼沒有給出任何錯誤,但我無法在GUI中獲得矩形。 有人可以告訴我以下代碼中缺少的內容。 我相信這很簡單,所以請保持溫柔。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HelloWorldGUI2 {
private static class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
private static class RectDraw extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(230,80,10,10);
g.setColor(Color.RED);
g.fillRect(230,80,10,10);
}
}
public static void main(String[] args) {
JPanel content = new JPanel();
RectDraw newrect= new RectDraw();
JButton okButton= new JButton("OK");
JButton clearButton= new JButton("Clear");
ButtonHandler listener= new ButtonHandler();
okButton.addActionListener(listener);
clearButton.addActionListener(listener);
content.add(okButton);
content.add(clearButton);
content.add(newrect);
JFrame window = new JFrame("GUI Test");
window.setContentPane(content);
window.setSize(250,100);
window.setLocation(100,100);
window.setVisible(true);
}
}
你的newrect RectDraw的大小可能會非常小,可能是[0,0],因為它已經使用JPanel添加到FlowLayout並且沒有設置preferredSize。 考慮重寫其getPreferredSize()
方法並返回合適的Dimension,以便可以看到它的繪圖。
private static class RectDraw extends JPanel {
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(230,80,10,10);
g.setColor(Color.RED);
g.fillRect(230,80,10,10);
}
public Dimension getPreferredSize() {
return new Dimension(PREF_W, PREF_H); // appropriate constants
}
}
也,
paintComponent
方法應該受到保護,而不是公共 @Override
之前,不要忘記使用@Override
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.