想画一个圆。有两个JPanel,jp添加了两个JButton,想在show上画圆。现在不能画出圆来。觉得从那里看过,画的圆被show覆盖,可是repaint()以后还是不行
但是如果利用/**/当中部分,既把画圆做成类,做成底层JPanel,就可以。可是不想这样子
按现在这代码应该怎样修改那import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class Clock1{
public static void main(String[] args){
ClockFrame frame=new ClockFrame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class ClockFrame extends JFrame{
ClockPanel panel=new ClockPanel();
public ClockFrame(){
setTitle("clock");
setSize(200,200);
add(panel);
}
}
class ClockPanel extends JPanel{
private JPanel jp=new JPanel();
private JPanel show=new JPanel();
/* private JPanel show=new JPanel(); */
private JButton modify=new JButton("modify");
private JButton ok=new JButton("ok");
public ClockPanel(){
setLayout(new BorderLayout());
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"clock"));
show.setBackground(Color.RED);
jp.add(ok);
jp.add(modify);
add(show);
jp.setLayout(new FlowLayout());
add(jp,BorderLayout.NORTH);
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawOval(60,60,100,100);
}}
/*
class DrawPanel1 extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawOval(60,60,100,100);
}
}*/
但是如果利用/**/当中部分,既把画圆做成类,做成底层JPanel,就可以。可是不想这样子
按现在这代码应该怎样修改那import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class Clock1{
public static void main(String[] args){
ClockFrame frame=new ClockFrame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class ClockFrame extends JFrame{
ClockPanel panel=new ClockPanel();
public ClockFrame(){
setTitle("clock");
setSize(200,200);
add(panel);
}
}
class ClockPanel extends JPanel{
private JPanel jp=new JPanel();
private JPanel show=new JPanel();
/* private JPanel show=new JPanel(); */
private JButton modify=new JButton("modify");
private JButton ok=new JButton("ok");
public ClockPanel(){
setLayout(new BorderLayout());
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"clock"));
show.setBackground(Color.RED);
jp.add(ok);
jp.add(modify);
add(show);
jp.setLayout(new FlowLayout());
add(jp,BorderLayout.NORTH);
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawOval(60,60,100,100);
}}
/*
class DrawPanel1 extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawOval(60,60,100,100);
}
}*/
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class Clock1{
public static void main(String[] args){
ClockFrame frame=new ClockFrame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class ClockFrame extends JFrame{
ClockPanel panel=new ClockPanel();
public ClockFrame(){
setTitle("clock");
setSize(200,200);
this.getContentPane().add(panel);
// add(panel);
this.repaint();
}
}
class ClockPanel extends JPanel{
private JPanel jp=new JPanel();
// private JPanel show=new JPanel();
/* private JPanel show=new JPanel(); */
private JButton modify=new JButton("modify");
private JButton ok=new JButton("ok");
public ClockPanel(){
setLayout(new BorderLayout());
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"clock"));
setBackground(Color.RED);
jp.add(ok);
jp.add(modify);
// add(show);
jp.setLayout(new FlowLayout());
add(jp,BorderLayout.NORTH);
// repaint();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawOval(60,60,100,100);
System.out.println("-----paintComponent------");
}}
这句要代替add(panel)
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class Clock{
public static void main(String[] args){
java.awt.EventQueue.invokeLater(new Runnable(){
@Override public void run(){
JFrame frame=new JFrame("Clock");
frame.setSize(200,200);
frame.add(new ClockPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
static class ClockPanel extends JPanel{
private JPanel jp=new JPanel();
private JButton modify=new JButton("modify");
private JButton ok=new JButton("ok");
public ClockPanel(){
super(new BorderLayout());
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Clock"));
setBackground(Color.RED);
jp.add(ok);
jp.add(modify);
jp.setOpaque(false);
add(jp,BorderLayout.NORTH);
}
@Override public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawOval(60,60,100,100);
System.out.println("-----paintComponent------");
}
}
}
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.border.*;import java.util.*;public class Clock{
public static void main(String[] args){
java.awt.EventQueue.invokeLater(new Runnable(){
@Override public void run(){
JFrame frame=new JFrame("Clock");
frame.setSize(400,400);
frame.add(new ClockPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
static class ClockPanel extends JPanel{
private JPanel jp=new JPanel();
private JButton modify=new JButton("modify");
private JButton ok=new JButton("ok");
private JPanel drawing = new DrawingPad();
public ClockPanel(){
super(new BorderLayout());
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Clock"));
setBackground(Color.RED);
jp.add(ok);
jp.add(modify);
jp.setOpaque(false);
add(jp,BorderLayout.NORTH);
// drawing.setOpaque(false);
add(drawing,BorderLayout.CENTER);
}
}
static class DrawingPad extends JPanel{ @Override public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(Color.BLACK);
g2d.draw(new Ellipse2D.Double(60D,60D,100D,100D));
}
}
}