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);
}
}