jpanel中的graphics中所画得图像不能显示出来 20
publicclassTestGuiextendsBaseJFrame{privateJPaneljPanelGraphics;//底板显示线性表的当前元素。public...
public class TestGui extends BaseJFrame {
private JPanel jPanelGraphics;// 底板显示线性表的当前元素。
public TestGui() {
this.setLayout(new BorderLayout());
this.setVisible(true);
this.setSize(600, 400);
this.setTitle("线性表");
jPanelGraphics = new JPanel();
this.add(jPanelGraphics);
infoMiddleJpanel(jPanelGraphics);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
// 注入图像
public void infoMiddleJpanel(JPanel jPanel){
MyList ml = new MyList();
ml.add("a");
ml.add("b");
ml.add("c");
ml.add("d");
paintClear(jPanel);
paintList(ml,jPanel);
}
// 功能是将底板jpanel清空。
public void paintClear(JPanel jPanel){
Graphics g = jPanel.getGraphics();
Color c = jPanel.getBackground();
g.setColor(c); // 用按钮色将绘图底板清空。
g.fillRect(0, 0, jPanel.getWidth(), jPanel.getHeight());
}
// 功能是将线性表中的元素在底板jpanel中显示。
public void paintList(MyList ml,JPanel jPanel){
int ix,iy;
String s;
Graphics g = jPanel.getGraphics();
// paintClear(jPanel);
g.setColor(Color.BLACK);
ix = 50;
iy = 50;
if(ml.length()>0){
for(int i=0;i<ml.length();i++){
// 1:取出第 i个元素存入s
s = ml.getElement(i).toString();
System.out.println(s);
// 2:画矩形表示数据元素
g.drawRect(ix, iy, 30, 40);
// 3:在矩形中标记文字
g.drawString(s, ix+10, iy+25);
// 4:准备画一个数据元素。
ix = ix +40;
}
}
}
public static void main(String[] args) {
new TestGui();
}
}
public class BaseJFrame extends JFrame {
@Override
public void setVisible(boolean b) {
GuiUtil.centerWindow(this);
super.setVisible(b);
}
public void exit(JFrame source) {
int val = JOptionPane.showConfirmDialog(source, "真的离开吗?");
if (val == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
} 展开
private JPanel jPanelGraphics;// 底板显示线性表的当前元素。
public TestGui() {
this.setLayout(new BorderLayout());
this.setVisible(true);
this.setSize(600, 400);
this.setTitle("线性表");
jPanelGraphics = new JPanel();
this.add(jPanelGraphics);
infoMiddleJpanel(jPanelGraphics);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
// 注入图像
public void infoMiddleJpanel(JPanel jPanel){
MyList ml = new MyList();
ml.add("a");
ml.add("b");
ml.add("c");
ml.add("d");
paintClear(jPanel);
paintList(ml,jPanel);
}
// 功能是将底板jpanel清空。
public void paintClear(JPanel jPanel){
Graphics g = jPanel.getGraphics();
Color c = jPanel.getBackground();
g.setColor(c); // 用按钮色将绘图底板清空。
g.fillRect(0, 0, jPanel.getWidth(), jPanel.getHeight());
}
// 功能是将线性表中的元素在底板jpanel中显示。
public void paintList(MyList ml,JPanel jPanel){
int ix,iy;
String s;
Graphics g = jPanel.getGraphics();
// paintClear(jPanel);
g.setColor(Color.BLACK);
ix = 50;
iy = 50;
if(ml.length()>0){
for(int i=0;i<ml.length();i++){
// 1:取出第 i个元素存入s
s = ml.getElement(i).toString();
System.out.println(s);
// 2:画矩形表示数据元素
g.drawRect(ix, iy, 30, 40);
// 3:在矩形中标记文字
g.drawString(s, ix+10, iy+25);
// 4:准备画一个数据元素。
ix = ix +40;
}
}
}
public static void main(String[] args) {
new TestGui();
}
}
public class BaseJFrame extends JFrame {
@Override
public void setVisible(boolean b) {
GuiUtil.centerWindow(this);
super.setVisible(b);
}
public void exit(JFrame source) {
int val = JOptionPane.showConfirmDialog(source, "真的离开吗?");
if (val == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
} 展开
1个回答
展开全部
g.drawOval(0, 0, 36, 36)
第一对坐标是一个能把你做的图形用最小的面积包围起来的矩形 的左上角的坐标,第二对是这个圆(确切的说是椭圆)的长轴和短轴的长度。
g.drawString("1",36, 36);
所画字体从36,36的位置开始,你想把它放进圆中,就要根据字体高、宽来计算圆的位置和大小。
至于
drawPanel.setBorder(BorderFactory.createLineBorder(Color.red));
这句是肯定起了作用的,只不过太快了,你还没反映过来。
在把边框设置为红色后,被你画的圆和字符覆盖了,把
public void paint(Graphics g){
g.drawOval(0, 0, 36, 36);
g.drawString("1",36, 36);
}
}
注释掉,你就能看到了。
不知道最终的目的是什么,但比可以寻求另外的解决方案,如嵌套等。
第一对坐标是一个能把你做的图形用最小的面积包围起来的矩形 的左上角的坐标,第二对是这个圆(确切的说是椭圆)的长轴和短轴的长度。
g.drawString("1",36, 36);
所画字体从36,36的位置开始,你想把它放进圆中,就要根据字体高、宽来计算圆的位置和大小。
至于
drawPanel.setBorder(BorderFactory.createLineBorder(Color.red));
这句是肯定起了作用的,只不过太快了,你还没反映过来。
在把边框设置为红色后,被你画的圆和字符覆盖了,把
public void paint(Graphics g){
g.drawOval(0, 0, 36, 36);
g.drawString("1",36, 36);
}
}
注释掉,你就能看到了。
不知道最终的目的是什么,但比可以寻求另外的解决方案,如嵌套等。
追问
没看懂你回答的什么意思,但如何解决不能显示的问题呢?关键是他什么都不能显示
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询