2
我希望在按下按鈕時繪製一個矩形,但它似乎不起作用。 這裏是我的代碼:WindowsBuilder:按下按鈕時如何繪製組件?
package draw.rect;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class DR extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
DR frame = new DR();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public DR() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 458, 312);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButton btnDrawRrect = new JButton("Draw Rrect");
btnDrawRrect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.out.print("hello");
RectangleComponent r2 = new RectangleComponent();
contentPane.add(r2);
r2.revalidate();
contentPane.revalidate();
}
});
btnDrawRrect.setBounds(10, 11, 89, 23);
contentPane.add(btnDrawRrect);
}
}
package draw.rect;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JComponent;
public class RectangleComponent extends JComponent {
Rectangle rect;
public RectangleComponent()
{
rect = new Rectangle(50, 50, 120, 130);
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
g2.draw(rect);
}
}
的問題是,當動作事件監聽器被調用時,JComponent的正確構建,但它沒有添加到幀。 在此先感謝
我實際上使用WindowsBuilder Pro來構建我的JFrame,所以這就是爲什麼佈局設置爲空。這是爲什麼矩形沒有繪製的問題嗎? – 2013-03-03 07:29:53
@ user2109278:再次,該矩形未顯示,因爲保存它的組件的大小爲0,0。請注意,WindowsBuilderPro不會強制您使用空佈局,您仍然可以使用此工具使用所有佈局管理器,但我建議您在理解Swing之前不要使用代碼生成庫。 – 2013-03-03 07:32:06