java控件
① java中如何让一个控件显示在另一个控件的上层
importjava.awt.Color;
importjava.awt.Dimension;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.DefaultListModel;
importjavax.swing.JEditorPane;
importjavax.swing.JFrame;
importjavax.swing.JLayeredPane;
importjavax.swing.JList;
{
publicJLayeredPane1(){
super("JLayeredPane");
JListjl1=newJList();
DefaultListModeldlm=newDefaultListModel();
dlm.addElement("asdfwfewfw");
dlm.addElement("asdfwf124234ewfw");
dlm.addElement("asdfwf123ewfw");
jl1.setModel(dlm);
JEditorPanejep1=newJEditorPane();
jep1.setBackground(Color.yellow);
jep1.setBounds(0,0,300,300);//在这里调整控件的显示位置和大小
jl1.setBounds(100,100,100,400);//在这里调整控件的显示位置和大小
JLayeredPanelayeredPane=getLayeredPane();
layeredPane.add(jep1,10,1);
layeredPane.add(jl1,10,0);
setSize(newDimension(280,280));
addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
this.setVisible(true);
}
publicstaticvoidmain(String[]args){
newJLayeredPane1();
}
}
② 怎样自己做一个java控件
继承Component,重载paint把字或者图片自己画出来就是了。但是功能会少很多,不能添加别控件了。
class MyComponent extends Component {
String str = "";
MyComponent(String str) {
this.str = str;
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawString(str, 10, 10);
}
}
图片也一样,反正就是自己画。不过现成的东西都有还是用现成的把。
③ 关于java中如何取得控件类型和名称的问题...
你把六个JButton的引用保留下来,而不要buttonpanel.add(new JButton(button[x]));
你事先new好6个JButton,引用放到数组或者任何集合里,之后拿到引用就可以改了
④ 什么是java控件怎样使用java控件
import Java.util.Date;
import java.util.Calendar;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException ;
import java.awt.Color ;
import java.awt.Font;
import java.awt.Point ;
import java.awt.Dimension ;
import java.awt.BorderLayout ;
import java.awt.FlowLayout ;
import java.awt.GridLayout ;
import java.awt.Component ;
import java.awt.Cursor ;
import java.awt.Frame ;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
//import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.jspinner ;
import javax.swing.JSpinner.NumberEditor ;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingUtilities;
import javax.swing.SwingConstants ;
import javax.swing.event.ChangeListener ;
import javax.swing.event.ChangeEvent ;
import javax.swing.border.LineBorder ;
public class DateChooserJButton extends JButton {
private DateChooser dateChooser =null;
private String preLabel ="" ;
public DateChooserJButton() {
this(getNowDate()) ;
}
public DateChooserJButton(SimpleDateFormat df , String dateString) {
this() ;
setText(df,dateString) ;
}
public DateChooserJButton(Date date) {
this("",date);
}
public DateChooserJButton(String preLabel , Date date) {
if (preLabel!=null) this.preLabel = preLabel ;
setDate(date) ;
setBorder(null) ;
setCursor(new Cursor(Cursor.HAND_CURSOR)) ;
super.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (dateChooser==null) dateChooser = new DateChooser();
Point p = getLocationOnScreen() ;
p.y = p.y+30 ;
dateChooser.showDateChooser(p) ;
}
}) ;
}
private static Date getNowDate() {
return Calendar.getInstance().getTime() ;
}
private static SimpleDateFormat getDefaultDateFormat() {
return new SimpleDateFormat("yyyy年MM月dd日HH时") ;
}
//覆盖父类的方法
public void setText(String s) {
Date date ;
try {
date = getDefaultDateFormat().parse(s) ;
}catch (ParseException e) {
date = getNowDate() ;
}
setDate(date) ;
}
public void setText(SimpleDateFormat df , String s) {
Date date ;
try {
date = df.parse(s) ;
}catch (ParseException e) {
date = getNowDate() ;
}
setDate(date) ;
}
public void setDate(Date date) {
super.setText(preLabel+getDefaultDateFormat().format(date));
}
public Date getDate() {
String dateString = getText().substring(preLabel.length());
try {
return getDefaultDateFormat().parse(dateString);
} catch (ParseException e) {
return getNowDate() ;
}
}
//覆盖父类的方法使之无效
public void addActionListener(ActionListener listener ) {
}
private class DateChooser extends JPanel implements ActionListener ,ChangeListener {
int startYear = 1980; //默认【最小】显示年份
int lastYear = 2050; //默认【最大】显示年份
int width = 200; //界面宽度
int height = 200; //界面高度
Color backGroundColor = Color.gray; //底色
//月历表格配色----------------//
Color palletTableColor = Color.white; //日历表底色
Color todayBackColor = Color.orange; //今天背景色
Color weekFontColor = Color.blue; //星期文字色
Color dateFontColor = Color.black; //日期文字色
Color weekendFontColor = Color.red; //周末文字色
//控制条配色------------------//
Color controlLineColor = Color.pink; //控制条底色
Color controlTextColor = Color.white; //控制条标签文字色
Color rbFontColor = Color.white; //RoundBox文字色
Color rbBorderColor = Color.red; //RoundBox边框色
Color rbButtonColor = Color.pink; //RoundBox按钮色
Color rbBTFontColor = Color.red; //RoundBox按钮文字色
JDialog dialog ;
JSpinner yearSpin ;
JSpinner monthSpin ;
JSpinner hourSpin ;
JButton[][] daysButton = new JButton[6][7] ;
DateChooser() {
setLayout(new BorderLayout());
setBorder(new LineBorder(backGroundColor, 2));
setBackground(backGroundColor);
JPanel topYearAndMonth = createYearAndMonthPanal();
add(topYearAndMonth,BorderLayout.NORTH);
JPanel centerWeekAndDay = createWeekAndDayPanal();
add(centerWeekAndDay,BorderLayout.CENTER);
}
private JPanel createYearAndMonthPanal(){
Calendar c = getCalendar() ;
int currentYear =c.get(Calendar.YEAR);
int currentMonth =c.get(Calendar.MONTH)+1;
int currentHour =c.get(Calendar.HOUR_OF_DAY);
JPanel result = new JPanel();
result.setLayout(new FlowLayout());
result.setBackground(controlLineColor);
yearSpin = new JSpinner(new SpinnerNumberModel(currentYear,startYear,lastYear,1));
yearSpin.setPreferredSize(new Dimension(48,20)) ;
yearSpin.setName("Year") ;
yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####")) ;
yearSpin.addChangeListener(this) ;
result.add(yearSpin) ;
JLabel yearLabel = new JLabel("年");
yearLabel.setForeground(controlTextColor);
result.add(yearLabel);
monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth,1,12,1));
monthSpin.setPreferredSize(new Dimension(35,20)) ;
monthSpin.setName("Month") ;
monthSpin.addChangeListener(this) ;
result.add(monthSpin) ;
JLabel monthLabel = new JLabel("月");
monthLabel.setForeground(controlTextColor);
result.add(monthLabel);
hourSpin = new JSpinner(new SpinnerNumberModel(currentHour,0,23,1));
hourSpin.setPreferredSize(new Dimension(35,20)) ;
hourSpin.setName("Hour") ;
hourSpin.addChangeListener(this) ;
result.add(hourSpin) ;
JLabel hourLabel = new JLabel("时");
hourLabel.setForeground(controlTextColor);
result.add(hourLabel);
return result ;
}
private JPanel createWeekAndDayPanal() {
String colname[] = {"日","一","二","三","四","五","六"};
JPanel result = new JPanel();
//设置固定字体,以免调用环境改变影响界面美观
result.setFont(new Font("宋体", Font.PLAIN, 12));
result.setLayout(new GridLayout(7,7));
result.setBackground(Color.white);
JLabel cell ;
for(int i=0;i<7;i++) {
cell = new JLabel(colname[i]);
cell.setHorizontalAlignment(JLabel.RIGHT);
if (i==0 i==6) cell.setForeground(weekendFontColor) ;
else cell.setForeground(weekFontColor) ;
result.add(cell) ;
}
int actionCommandId = 0 ;
for(int i = 0; i < 6; i++)
for(int j = 0; j < 7; j++) {
JButton numberButton = new JButton();
numberButton.setBorder(null) ;
numberButton.setHorizontalAlignment(SwingConstants.RIGHT);
numberButton.setActionCommand(String.valueOf(actionCommandId)) ;
numberButton.addActionListener(this) ;
numberButton.setBackground(palletTableColor);
numberButton.setForeground(dateFontColor) ;
if (j==0 j==6) numberButton.setForeground(weekendFontColor) ;
else numberButton.setForeground(dateFontColor) ;
daysButton[i][j] = numberButton;
result.add(numberButton) ;
actionCommandId ++ ;
}
return result;
}
private JDialog createDialog(Frame owner ) {
JDialog result = new JDialog(owner,"日期时间选择",true) ;
result.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
result.getContentPane().add(this,BorderLayout.CENTER) ;
result.pack() ;
result.setSize(width, height);
return result ;
}
void showDateChooser(Point position ) {
Frame owner =(Frame)SwingUtilities.getWindowAncestor(DateChooserJButton.this) ;
if (dialog==null dialog.getOwner()!= owner) dialog = createDialog(owner ) ;
dialog.setLocation(getAppropriateLocation(owner ,position ) ) ;
flushWeekAndDay() ;
dialog.show();
}
Point getAppropriateLocation(Frame owner ,Point position ) {
Point result = new Point(position) ;
Point p = owner.getLocation() ;
int offsetX = (position.x+width) - (p.x + owner.getWidth() ) ;
int offsetY = (position.y+height) - (p.y + owner.getHeight() ) ;
if (offsetX >0 ) {
result.x -= offsetX ;
}
if (offsetY >0 ) {
result.y -= offsetY ;
}
return result ;
}
private Calendar getCalendar() {
Calendar result = Calendar.getInstance();
result.setTime(getDate()) ;
return result ;
}
private int getSelectedYear() {
return ((Integer)yearSpin.getValue()).intValue() ;
}
private int getSelectedMonth() {
return ((Integer)monthSpin.getValue()).intValue() ;
}
private int getSelectedHour() {
return ((Integer)hourSpin.getValue()).intValue() ;
}
private void dayColorUpdate(boolean isOldDay) {
Calendar c = getCalendar() ;
int day = c.get(Calendar.DAY_OF_MONTH);
c.set(Calendar.DAY_OF_MONTH,1);
int actionCommandId =day-2+c.get(Calendar.DAY_OF_WEEK) ;
int i = actionCommandId/7;
int j = actionCommandId%7;
if (isOldDay) daysButton[i][j].setForeground(dateFontColor) ;
else daysButton[i][j].setForeground(todayBackColor) ;
}
private void flushWeekAndDay() {
Calendar c = getCalendar() ;
c.set(Calendar.DAY_OF_MONTH,1);
int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH);
int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK) ;
for(int i = 0; i < 6; i++) {
for(int j = 0; j < 7; j++) {
String s="" ;
if (dayNo>=1 && dayNo<=maxDayNo ) s = String.valueOf(dayNo) ;
daysButton[i][j].setText(s) ;
dayNo ++ ;
}
}
dayColorUpdate(false) ;
}
public void stateChanged(ChangeEvent e) {
JSpinner source =(JSpinner)e.getSource() ;
Calendar c = getCalendar() ;
if (source.getName().equals("Hour")) {
c.set(Calendar.HOUR_OF_DAY, getSelectedHour());
setDate(c.getTime());
return ;
}
dayColorUpdate(true) ;
if (source.getName().equals("Year"))
c.set(Calendar.YEAR, getSelectedYear());
else
// (source.getName().equals("Month"))
c.set(Calendar.MONTH, getSelectedMonth()-1);
setDate(c.getTime());
flushWeekAndDay() ;
}
public void actionPerformed(ActionEvent e) {
JButton source =(JButton)e.getSource() ;
if (source.getText().length()==0) return ;
dayColorUpdate(true) ;
source.setForeground(todayBackColor) ;
int newDay = Integer.parseInt(source.getText());
Calendar c = getCalendar() ;
c.set(Calendar.DAY_OF_MONTH,newDay);
setDate(c.getTime());
}
}
}
⑤ Java中窗口控件有哪些
Java 中的窗体控件(也就是可视控件),可分为两大类。一是 AWT ,一是 Swing AWT在 java.awt包之中。 Swing 在 javax.swing 包中。 使用前要先import java.awt.* 或 import javax.swing.*; 还要 import java.awt.event.*; 加入事件驱动。
⑥ 怎么把java写的控件(比如说一个按钮)加到layout布局里面呀!
我有点不太明白你的意思,Java写的控件,放在Layout里,我现在理解是把Button放到一个容器里。如果是这样的话,那就简单了,有个add()方法的。比如:
public class Test extends JFrame
{
public Test()
{
Contianer contentPane = this.getContentPane() ;
contentPane.setLayout(new BorderLayout()) ; //设置为BorderLayout布局
contentPane.add(new Button("按键") , BorderLayout.NORTH) ; //放在北边
contentPane.add(new Button("按键") , BorderLayout.SOUTH) ; //放在南边
setVisible(true) ;
setSize(400,300) ;
}
public static void main(String args[])
{
new Test() ;
}
}
(代码没有调试过,自己调试吧)
基本上就可以 把Button入进去了,不知道你是这个意思没。
⑦ java的容器控件有哪些
1.顶层容器
什么是顶层容器?当我们使用Java进行图形编程的时候,图在哪里绘制呢?我们需要一个能够提供图形绘制的容器,这个容器就被称为顶层容器,你
也可以把它想象成一个窗口。顶层容器是进行图形编程的基础,一切图形化的东西,都必然包括在顶层容器中。在Swing中,我们有三种可以使用的顶层容器,
它们分别是:
JFrame:用来设计类似于Windows系统中的窗口形式的应用程序。
JDialog:和JFrame类似,只不过JDialog是用来设计对话框。
JApplet:用来设计可以在嵌入在网页中的Java小程序。
如果需要使用Swing制作一个窗口类程序,我们的代码看起来应该是这样:
import javax.swing.*;
public class KyodaiUI
extends JFrame {
……
}
2.控件
控件是构成应用程序界面的基本元素,按钮、文本框、进度条等,这些都是控件。控件(这里我们只讨论可视化控件)又可以分为容器控件和非容器控件。从字面
意义上来理解,容器控件就是能包含其他控件的特殊控件,例如,Java中的JPanel控件就属于容器型控件,我们可以在JPanel中放置按钮、文本框
等非容器控件,你甚至可以在JPanel中再放置若干个JPanel控件(值得注意的是,顶层容器也是容器型控件,每一个窗口应用程序中有且只能有一个顶
层容器控件,换句话说,顶层容器不能包括在其他的控件中)。
Java中的容器控件有很多,除刚才提到的JPanel外,还有
JTabbedPane、JScrollPane等,非容器控件有JButton、JLabel、JTextField等。如果你需要向某个容器型的控件
中添加控件,你可以使用 add(Component comp) 方法来实现,如:
JPanel panel = new JPanel();
JButton button = new JButton();
panel.add(button);
3.边框
虽然我们使用了不同前景色来区别不同的区域,然而却没有层次感,加上边框一定会漂亮许多。
在Java中,所有以J打头的Swing控件都可以使用setBorder方法来为自己设置边框。边框有很多种,线型、凸起、凹下、空的,你甚至可以自
由组合形成个人风格。所有的Border都必须使用javax.swing.BorderFactory中提供的静态方法来创建,比如:
Border border = BorderFactory.createBevelBorder(BevelBorder.LOWERED,
new Color(45, 92, 162),
new Color(43, 66, 97),
new Color(45, 92, 162),
new Color(84, 123, 200));
现在,我们将toolBar.setBackground(Color.white)改为toolBar.setBorder(border),立体效果是不是已经出现了?
⑧ JAVA怎么向窗体中添加控件
你是说用swing编辑的图形界面上添加控件吧 ?我以前写的替换文件的窗口,你可以参考下http://liujunjie51072.blog.163.com/blog/static/86891621200991243738965/edit/
⑨ 在Java中调用ActiveX控件(OCX控件)
activex控件注册需要你机器的支持,你看看你的可执行程序r2.0.exe的安装目录下是否有这个控件,如果有,就用它自带的注册,还有一般windows的机器自带了formula.ocx这个表格控件的,如果实在没有就到别人的机器上复制一个吧。
⑩ JAVA中怎样在jTable中添加控件
在很久很久以前我写的一个JTABLE,你参考一下吧
package classBox;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JApplet;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class TB extends JApplet {
@Override
public void init() {
}
@Override
public void start() {
String[][] data1 = new String[100][3];
for(int i=0 ;i<100;i++){
for(int j=0;j<3;j++){
data1[i][j]=i*j+"aa";
}
}
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
final String[] colHeads = {"姓名", "电话", "年龄"};
DefaultTableModel model = new DefaultTableModel(new String[0][3], colHeads);
JTable jt = new JTable(model);
String[] data = null;
for(int i=0;i<100;i++){
data = new String[3];
data[0] = data1[i][0];
data[1] = data1[i][1];
data[2] = data1[i][2];
model.addRow(data);
}
JScrollPane jsp = new JScrollPane(jt);
cp.add(jsp, BorderLayout.CENTER);
}
}