导航:首页 > 编程语言 > java自定义控件

java自定义控件

发布时间:2022-10-11 04:41:43

java 程序

JTree添加图片

1.首先定义根节点和叶节点

DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");

DefaultMutableTreeNode leafNode1 = new DefaultMutableTreeNode("叶节点1");

DefaultMutableTreeNode leafNode2 = new DefaultMutableTreeNode("叶节点2");

root.add(leafNode1);

root.add(leafNode2);

2.设置树的显示风格

UIManager.getDefaults().put("Tree.lineTypeDashed", true);// 设置连接线为虚线

UIManager.getDefaults().put("Tree.lineTypeDashed",false); //设置连接线为直线

JTree tree = new JTree(root);//建树

tree.putClientProperty("JTree.lineStyle","None");//去掉连接线
tree.putClientProperty("JTree.lineStyle","Horizontal");//将树设为水平分隔风格
tree.putClientProperty("JTree.lineStyle","Angled");//默认

3.给树上节点添加图片

首先要获得树的DefaultTreeCellRenderer

DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer();

Icon rootIcon = new ImageIcon("rootIcon路径");
Icon leafIcon = new ImageIcon("leafIcon路径");

添加图片

rend.setLeafIcon(leafIcon);//叶节点图片
rend.setOpenIcon(rootIcon);//树打开时显示的图片
rend.setClosedIcon(collIcon);//树关闭时显示的图片

若要隐藏根节点

tree.setRootVisible(false);

setBounds(int x, int y, int width, int height)方法的应用

很早以前就看到了这个方法,其说明:(x,y)为组件显示的坐标,(width,height)为组件的宽和高

但无论我怎么设置都没有用,知道前天看到了一个具体实例才豁然开朗,只需要加上一行代码:

this.setLayout(null);

㈡ 如何创建自定义的Java Web控件

有俩中控件 第一种就是tld标签,第二种 tag标签,tag标签类似一个单独的jsp文件,可实现公用,例如:
<%@ tag pageEncoding="UTF-8"%>
<%@ attribute name="title" type="java.lang.String" required="false"%>
<%@ attribute name="basePath" type="java.lang.String" required="false"%>
<%@ taglib prefix="tag" tagdir="/WEB-INF/tags" %>
<%@ include file="/common/taglib.jsp"%>
<jsp:doBody/>
</body>
</html>
这就是一个tag标签,文件名就是控件名,必须放在/WEB-INF/tags下
需要导入<%@ taglib prefix="tag" tagdir="/WEB-INF/tags" %> 才可使用 <tag:文件名></..>
tld标签去参考jstl标签,也很简单各有用途

android自定义控件出错,请高手指点! 错误信息:java.lang.ClassCastException:

context不是android.support.v4.app.FragmentActivity对像,强转出错
在强转的时候最好先判断if(context instanceof FragmentActivity){

㈣ 在java的自定义标签里面写的html格式的控件在界面上怎么获取它的值

楼主神人啊?直接在java代码里面拼凑html。。JSP为什么不用啊。难道就没有更好的解决方案document文档对象模型在java代码中肯定不能用。。。还深深描述一下不能用。。⊙﹏⊙b汗,把需求贴出来看看

㈤ 我要设计一个日历控件 用 java开发的我的软件是eclipse我该怎么操作呢 求大神指导

这是我以前制作的日历控件,根据网友的代码改写的,自己用着感觉还行。现在没有时间根据你的条件再改写了,如果你觉得合用,就自己再改吧。

㈥ Android之自定义控件

一、简单自定义控件MyButton



每一个控件都是一个java类,有对应的代码,只要你能正确的编写java代码,那么电脑培训http://www.kmbdqn.cn/发现可以创造出符合你需求的控件,即自定义控件。


1.通过继承的方式,创建自定义控件


通过继承一个现有的控件,覆盖其界面的呈现


通过继承一个包含若干子控件的布局


通过继承一个现有的控件,覆盖某个响应事件


继承一个View来完整自定义一个心控件


2.使你的自定义控件继承自某个最接近的Android控件,必须是public


一般都会调用父类的构造方法,注意一般有三个构造方法


覆盖原来控件的方法,注意是否要再调用super中的方法


在XML中以类全名的方式引用此控件


二、复杂自定义控件MyLogin


需要设计包含一组控件的自定义控件就需要用到复杂的自定义控件


1)使得你的自定义控件继承自某个接近的布局


2)正确的实现构造方法:构造方法中实例化目标布局,同时查找到各个子布局


3)添加相应的响应代码来修改属性,使得外部能访问布局中的子控件


4)在XML中以类全名的方式引用此控件,完整的包名+类名。


㈦ 什么是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());
}

}

}

㈧ Android开发中,自定义控件,就是完全后台java中定义属性,不通过attrs来定义,怎么做……

还是一样的作法啊。你在类里面定义一些属性就好,在构造函数里面不用通过attrs来解析就行了。

㈨ java swing JCombox上的箭头事件怎么触发

初步看起来是你把简单问题给复杂化了,:)
既然是拖动鼠标,那么是否是按drag和drop来处理。如果是那就走Swing的DnD处理(不过看你的意思不象)。
如果不是,那么把鼠标事件放到面板上是不是更好,然后让鼠标穿透过一个自定义控件(基于JComponet,参考JButton等来定制),然后根据鼠标的位置和控件的位置来看鼠标在哪个控件中。
下面是一个自定义控件的例子:
class MyComponent extends JComponent implements Graph {
private String text;
public MyComponent(String text) {
this.text = text;
}
@Override
public void paint(Graphics g) {
g.setColor(Color.green);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.white);
FontMetrics fm = g.getFontMetrics();
Rectangle bounds = fm.getStringBounds(text, g).getBounds();
g.drawString(text, (getWidth() - bounds.width) / 2, (getHeight() - bounds.height) / 2 + fm.getAscent() - fm.getDescent());
}
}
1
this.getLocationOnScreen();// 获取屏幕坐标

阅读全文

与java自定义控件相关的资料

热点内容
新科学pdf 浏览:744
现在还有c语言编译吗 浏览:672
哪里买到单片机 浏览:478
linux文件打开数量 浏览:510
编译原理中什么是l属性文法 浏览:367
硬盘加密时出现的问题 浏览:59
如何退域命令 浏览:108
看书的app哪里看 浏览:291
服务器怎么调大 浏览:3
android天气apijson 浏览:984
为什么创建id会出现服务器错误 浏览:837
代码中有不必编译的单词吗 浏览:563
钩子与数据库编程 浏览:563
安卓光遇录歌怎么设置 浏览:485
虚拟机怎么和云服务器搭建集群 浏览:896
python倒计时代码turtle 浏览:492
cad命令mv 浏览:928
nexus7一代androidl 浏览:306
linux使用静态库编译过程 浏览:103
android平滑滚动效果 浏览:841