㈠ 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();// 獲取屏幕坐標