JPanel是轻量级的
Canvas是重量级的
不推荐重轻量级构件混用
表现上会有些区别
Canvas是重量级的
不推荐重轻量级构件混用
表现上会有些区别
解决方案 »
- 数组排序(含有字母)
- 请问如何翻译 Discriminated Union?
- Apache同步问题~~~~~~~~~~~~~交叉同步可以吗?
- 请教一个问题,为什么不显示结果呢?郁闷,谢谢!
- 请教,窗口最小化后,JTable里的内容全都不见了,只有点一下才可以看到,不知道什么原因?
- tomcat5.0.28 和tomcat5.5.17 哪个版本稳定些?
- 请教各位大狭
- 哪儿可以下载到Linux下的J2sdk1.4.0版?
- java applet中如何实现一个小图片的移动??
- 请关心程序员职业生涯的朋友进来。。。。。。
- 弹出消息窗口?
- 请热心的朋友帮我详细解答一下数组的问题。。。我分开来问。方便回答
那如果要用Swing画图,有什么其他的办法?import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;class Mycanvas extends Canvas
{
Mycanvas()
{
// setBackground(Color.white);//这行加后没用,背景还是灰色的
getSize();
} public void paint(Graphics g)
{
g.drawOval(50,50,30,30);//这行是后来添的
g.drawRect(30,30,40,40);
g.drawOval(20,80,30,30);
g.drawLine(30,30,70,70);//这行也是添的,编译运行后并没有变化
} public Dimension getPreferredSize()
{
return new Dimension(300,200);
}
};class Panel_Input extends JPanel
{
JPanel p_data,p_button;
JLabel
label_number = new JLabel("活动号",JLabel.CENTER),
label_name = new JLabel("活动名",JLabel.CENTER),
label_preactive = new JLabel("前期工程",JLabel.CENTER),
label_spendtime = new JLabel("花费时间",JLabel.CENTER),
label_master = new JLabel("负责人",JLabel.CENTER);
JTextField
text_number = new JTextField(10),
text_name = new JTextField(10),
text_preactive = new JTextField(10),
text_spendtime = new JTextField(10),
text_master = new JTextField(10);
JButton
next = new JButton("下一个"),
finish = new JButton("完成"); Panel_Input()
{
p_data = new JPanel();
p_data.setLayout(new GridLayout(2,5));
p_data.add(label_number);
p_data.add(label_name);
p_data.add(label_preactive);
p_data.add(label_spendtime);
p_data.add(label_master); p_data.add(text_number);
p_data.add(text_name);
p_data.add(text_preactive);
p_data.add(text_spendtime);
p_data.add(text_master); p_button = new JPanel();
p_button.setLayout(new FlowLayout());
p_button.add(next);
p_button.add(finish); setLayout(new BorderLayout());
add(p_data,BorderLayout.NORTH);
add(p_button,BorderLayout.CENTER);
}
};class Panel_Output extends JPanel
{
Mycanvas canvas = new Mycanvas();
JPanel info = new JPanel(); Panel_Output()
{
setLayout(new BorderLayout());
add(canvas,BorderLayout.CENTER);
add(info,BorderLayout.SOUTH);
}
};class MainFr extends JFrame implements ActionListener
{
Container contentpane;
JMenuBar menubar;
JMenu file,manage;
JMenuItem create,open,edit,qury,exit;
JSplitPane split;
Panel_Input input;
Panel_Output output;
Object[][] active = new Object[30][5];
Object columnName[]={"活动号","活动名","前期活动(活动号)","花费时间(天)","负责人"};
JTable table = new JTable(active,columnName);
JPanel p_button = new JPanel();
JButton update = new JButton("更新"); MainFr()
{
super("工程进度控制系统");
setVisible(true); menubar = new JMenuBar();
file = new JMenu("文件");
manage = new JMenu("管理");
create = new JMenuItem("新建");
open = new JMenuItem("打开");
edit = new JMenuItem("编辑");
qury = new JMenuItem("查询");
exit = new JMenuItem("退出"); create.addActionListener(this);
open.addActionListener(this);
edit.addActionListener(this);
qury.addActionListener(this);
exit.addActionListener(this); file.add(create);
file.add(open);
file.addSeparator();
file.add(exit); manage.add(edit);
manage.add(qury); menubar.add(file);
menubar.add(manage);
setJMenuBar(menubar); contentpane = getContentPane();
input = new Panel_Input();
output = new Panel_Output();
split = new JSplitPane(JSplitPane.VERTICAL_SPLIT,input,output);
contentpane.add(split,BorderLayout.CENTER); pack();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
} public void actionPerformed(ActionEvent e)
{
if(e.getSource()==create)
{
input.removeAll();
}
else if(e.getSource()==open)
{}
else if(e.getSource()==edit)
{}
else if(e.getSource()==qury)
{
input.removeAll();
table.setPreferredScrollableViewportSize(new Dimension(550,50));
input.add(new JScrollPane(table),BorderLayout.NORTH);
p_button.setLayout(new FlowLayout());
p_button.add(update); input.add(p_button,BorderLayout.CENTER);
}
else if(e.getSource()==exit)
{
System.exit(0);
}
}
};public class Design
{
public static void main(String[] args)
{
MainFr frame = new MainFr();
}
}
容器,可以任意的一层层叠放。在轻量级构件是用重量级构件会出现很多问主要体现在轻量级构件背景是透明比如重量级构件盖不了CheckBox,菜单等,相互覆盖的时候也会有问题。