在swing上画图的问题
package test12_2;
import javax.swing.*;
import java.awt.*;
public class test12_2 {
public static void main(String[] args)
{
Show s = new Show();
s.setTitle("两个按钮");
s.setVisible(true);
s.setResizable(false);
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
s.setSize(300 ,85 );
s.setLocationRelativeTo(null);
}
}
class Show extends JFrame
{
Show()
{
setLayout(new BorderLayout());
add(new MyPanel());
}
}
class MyPanel extends JPanel
{
DrawButton bt1 = new DrawButton("ok");
DrawButton bt2 = new DrawButton("cancel");
MyPanel()
{
setLayout(new GridLayout(1 , 2 , 10 , 20));
add(bt1);
add(bt2);
}
}
class DrawButton extends JButton
{
private String string;
DrawButton(String s)
{
string = s;
}
protected void paintComponent(Graphics g)
{
super.paintComponents(g);
g.setColor(Color.BLUE);
g.drawOval(10 , 10 , (int)(0.8 * getWidth()), (int)(0.8* getHeight()));
g.drawString(string, (int)(0.4* getWidth()) ,(int)(0.6 * getHeight()));
}
}
执行代码之后没什么问题但是用鼠标在两个Button之间晃动一下,会出现“杂交”现象,求解!
[解决办法]
class DrawButton extends JButton{ DrawButton(String s) { super(s); } protected void paintComponent(Graphics g) { super.paintComponents(g); g.setColor(Color.BLUE); g.drawOval(10 , 10 , (int)(0.8 * getWidth()), (int)(0.8* getHeight())); g.drawString(getText(), (int)(0.4* getWidth()) ,(int)(0.6 * getHeight())); }}
[解决办法]