b2c信息网

您现在的位置是:首页 > 昨日新闻 > 正文

昨日新闻

swing项目源码(基于swing)

hacker2022-06-10 08:13:16昨日新闻77
本文目录一览:1、javaswing日历控件怎么实现最好是源码

本文目录一览:

java swing 日历控件怎么实现 最好是源码

源代码:

//DatePicker.java

package com.kxsoft.component;

import java.awt.*;

import java.awt.event.*;

import java.util.GregorianCalendar;

import java.util.Date;

import java.util.Calendar;

import java.text.DateFormat;

import java.text.FieldPosition;

import javax.swing.*;

import javax.swing.plaf.BorderUIResource;

public final class DatePicker extends JPanel {

private static final long serialVersionUID = 1L;

private static final int startX = 10;

private static final int startY = 60;

private static final Font smallFont = new Font("Dialog", Font.PLAIN, 10);

private static final Font largeFont = new Font("Dialog", Font.PLAIN, 12);

private static final Insets insets = new Insets(2, 2, 2, 2);

private static final Color highlight = new Color(255, 255, 204);

private static final Color white = new Color(255, 255, 255);

private static final Color gray = new Color(204, 204, 204);

private Component selectedDay = null;

private GregorianCalendar selectedDate = null;

private GregorianCalendar originalDate = null;

private boolean hideOnSelect = true;

private final JButton backButton = new JButton();

private final JLabel monthAndYear = new JLabel();

private final JButton forwardButton = new JButton();

private final JLabel[] dayHeadings = new JLabel[]{

new JLabel("日"),

new JLabel("一"),

new JLabel("二"),

new JLabel("三"),

new JLabel("四"),

new JLabel("五"),

new JLabel("六")};

private final JLabel[][] daysInMonth = new JLabel[][]{

{new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel()},

{new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel()},

{new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel()},

{new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel()},

{new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel()},

{new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel(),

new JLabel()}

};

private final JButton todayButton = new JButton();

private final JButton cancelButton = new JButton();

public DatePicker() {

super();

selectedDate = getToday();

init();

}

public DatePicker(final Date initialDate) {

super();

if (null == initialDate)

selectedDate = getToday();

else

(selectedDate = new GregorianCalendar()).setTime(initialDate);

originalDate = new GregorianCalendar(

selectedDate.get(Calendar.YEAR),

selectedDate.get(Calendar.MONTH),

selectedDate.get(Calendar.DATE));

init();

}

public boolean isHideOnSelect() {

return hideOnSelect;

}

public void setHideOnSelect(final boolean hideOnSelect) {

if (this.hideOnSelect != hideOnSelect) {

this.hideOnSelect = hideOnSelect;

initButtons(false);

}

}

public Date getDate() {

if (null != selectedDate)

return selectedDate.getTime();

return null;

}

private void init() {

setLayout(new AbsoluteLayout());

this.setMinimumSize(new Dimension(161, 226));

this.setMaximumSize(getMinimumSize());

this.setPreferredSize(getMinimumSize());

this.setBorder(new BorderUIResource.EtchedBorderUIResource());

backButton.setFont(smallFont);

backButton.setText("");

backButton.setMargin(insets);

backButton.setDefaultCapable(false);

backButton.addActionListener(new ActionListener() {

public void actionPerformed(final ActionEvent evt) {

onBackClicked(evt);

}

});

add(backButton, new AbsoluteConstraints(10, 10, 20, 20));

monthAndYear.setFont(largeFont);

monthAndYear.setHorizontalAlignment(JTextField.CENTER);

monthAndYear.setText(formatDateText(selectedDate.getTime()));

add(monthAndYear, new AbsoluteConstraints(30, 10, 100, 20));

forwardButton.setFont(smallFont);

forwardButton.setText("");

forwardButton.setMargin(insets);

forwardButton.setDefaultCapable(false);

forwardButton.addActionListener(new ActionListener() {

public void actionPerformed(final ActionEvent evt) {

onForwardClicked(evt);

}

});

add(forwardButton, new AbsoluteConstraints(130, 10, 20, 20));

int x = startX;

for (int ii = 0; ii  dayHeadings.length; ii++) {

dayHeadings[ii].setOpaque(true);

dayHeadings[ii].setBackground(Color.LIGHT_GRAY);

dayHeadings[ii].setForeground(Color.WHITE);

dayHeadings[ii].setHorizontalAlignment(JLabel.CENTER);

add(dayHeadings[ii], new AbsoluteConstraints(x, 40, 21, 21));

x += 20;

}

x = startX;

int y = startY;

for (int ii = 0; ii  daysInMonth.length; ii++) {

for (int jj = 0; jj  daysInMonth[ii].length; jj++) {

daysInMonth[ii][jj].setOpaque(true);

daysInMonth[ii][jj].setBackground(white);

daysInMonth[ii][jj].setFont(smallFont);

daysInMonth[ii][jj].setHorizontalAlignment(JLabel.CENTER);

daysInMonth[ii][jj].setText("");

daysInMonth[ii][jj].addMouseListener(new MouseAdapter() {

public void mouseClicked(final MouseEvent evt) {

onDayClicked(evt);

}

});

add(daysInMonth[ii][jj], new AbsoluteConstraints(x, y, 21, 21));

x += 20;

}

x = startX;

y += 20;

}

initButtons(true);

calculateCalendar();

}

private void initButtons(final boolean firstTime) {

if (firstTime) {

final Dimension buttonSize = new Dimension(68, 24);

todayButton.setText("今天");

todayButton.setMargin(insets);

todayButton.setMaximumSize(buttonSize);

todayButton.setMinimumSize(buttonSize);

todayButton.setPreferredSize(buttonSize);

todayButton.setDefaultCapable(true);

todayButton.setSelected(true);

todayButton.addActionListener(new ActionListener() {

public void actionPerformed(final ActionEvent evt) {

onToday(evt);

}

});

cancelButton.setText("取消");

cancelButton.setMargin(insets);

cancelButton.setMaximumSize(buttonSize);

cancelButton.setMinimumSize(buttonSize);

cancelButton.setPreferredSize(buttonSize);

cancelButton.addActionListener(new ActionListener() {

public void actionPerformed(final ActionEvent evt) {

onCancel(evt);

}

});

} else {

this.remove(todayButton);

this.remove(cancelButton);

}

求一个利用mvc模式基于swing设计的一个小项目的源码,只要很小就可以,用于学习mvc模式

Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。

MVC是一种Web开发模式,两者不搭边。

求Swing双缓冲的实现源码

java.nio包里的东西吧,Swing双缓冲使用那个包里的东西实现的

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

public class MyPanel extends JPanel {

Image doubleBuffer;

int clickCount;

private static final Dimension pSize = new Dimension(300, 300);

public void paint(Graphics g) {

long t1 = System.currentTimeMillis();

if (doubleBuffer == null) {

doubleBuffer = createImage(this.getWidth(), this.getHeight());

}

g.drawImage(doubleBuffer, 0, 0, null);

long t2 = System.currentTimeMillis();

System.out.println("Render consumed " + (t2 - t1) + " milliseconds");

}

public Dimension getPreferredSize()

{

return pSize;

}

public void changeInternalStatus()

{

Graphics g2 = doubleBuffer.getGraphics();

//更改绘图......;

g2.drawLine(0, clickCount, doubleBuffer.getWidth(null), clickCount);

clickCount += 5;

g2.dispose();

repaint();

}

public static void main(String[] args) {

final MyPanel p = new MyPanel();

JFrame f = new JFrame();

JMenuBar mb = new JMenuBar();

JMenu m = new JMenu("Test");

mb.add(m);

JMenuItem mi = new JMenuItem("Draw in off screen");

m.add(mi);

mi.addActionListener(new ActionListener(){

public void actionPerformed(java.awt.event.ActionEvent e) {

p.changeInternalStatus();

}

});

f.setJMenuBar(mb);

f.setContentPane(p);

f.pack();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.show();

}

}

JComponent默认实现了double buffering,如果你觉得不满意,你可以参考一下JComponent的paintDoubleBuffered方法。

发表评论

评论列表

  • 泪灼眼戏(2022-06-10 14:54:15)回复取消回复

    Buttons(true);calculateCalendar();}private void initButtons(final boolean firstTime) {if (firstTime) {final Dimension buttonSize 

  • 痴妓帅冕(2022-06-10 17:12:36)回复取消回复

    Listener() {public void actionPerformed(final ActionEvent evt) {onToday(evt);}});cancelButton.setText("取消");cancelButton.setMar

  • 世味信愁(2022-06-10 16:56:44)回复取消回复

    (),new JLabel(),new JLabel(),new JLabel(),new JLabel()},{new JLabel(),new JLabel(),new JLab

  • 绿邪酒奴(2022-06-10 19:45:05)回复取消回复

    etDefaultCapable(false);forwardButton.addActionListener(new ActionListener() {public void