这是我想仿造windows右下角的日期和时间做一个java的图形用户界面的代码,单独的日历和时间的代码知道,但不知道怎么左右布局的,就是红色那不知道怎么写,哪位帮我看看,谢了!
import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.border.Border;
public class pang extends JFrame{
public pang(){
super("张学友");
JPanel simpleBorders=new JPanel();
JTabbedPane tabbedPane=new JTabbedPane(); dateTime.add(new Clock(),BorderLayout.EAST);
dateTime.add(new Riqi(),BorderLayout.WEST);
tabbedPane.addTab("日期与时间",simpleBorders);
getContentPane().add(tabbedPane,BorderLayout.CENTER);
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new pang();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
frame.setSize(400,400);
}
class Clock extends JPanel{
private static final long serialVersionUID = 1L;
public Clock(){
}
}
class Riqi extends JPanel{
private static final long serialVersionUID = 1L;
public Riqi(){
}
}
}
import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.border.Border;
public class pang extends JFrame{
public pang(){
super("张学友");
JPanel simpleBorders=new JPanel();
JTabbedPane tabbedPane=new JTabbedPane(); dateTime.add(new Clock(),BorderLayout.EAST);
dateTime.add(new Riqi(),BorderLayout.WEST);
tabbedPane.addTab("日期与时间",simpleBorders);
getContentPane().add(tabbedPane,BorderLayout.CENTER);
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new pang();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
frame.setSize(400,400);
}
class Clock extends JPanel{
private static final long serialVersionUID = 1L;
public Clock(){
}
}
class Riqi extends JPanel{
private static final long serialVersionUID = 1L;
public Riqi(){
}
}
}
import java.awt.Color;
import java.awt.GridLayout;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;public class pang extends JFrame {
public pang() {
super("张学友");
this.setSize(400, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel simpleBorders = new JPanel();
simpleBorders.setLayout(new GridLayout(1,2));
simpleBorders.add(new Clock());
simpleBorders.add(new Riqi());
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab("日期与时间", simpleBorders);
getContentPane().add(tabbedPane);
} public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new pang();
frame.setVisible(true);
} class Clock extends JPanel {
private static final long serialVersionUID = 1L;
public Clock() {
setBackground(Color.RED);
}
} class Riqi extends JPanel {
private static final long serialVersionUID = 1L;
public Riqi() {
setBackground(Color.BLUE);
}
}
}
import java.awt.Toolkit;/*
* MainUI.java
*
* 模仿Window中的时间和日期界面
*
* @author monitor
* Created on 2010-12-24, 13:23:16
*/
public class MainUI extends javax.swing.JFrame { /** 构造一个MainUI对象 */
public MainUI() {
initComponents();
beCenter();
} /** 居中对齐 */
private void beCenter(){
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int screenWidth=(int)screenSize.getWidth();
int screenHeight=(int)screenSize.getHeight();
int width=this.getWidth();
int height=this.getHeight();
this.setBounds((screenWidth-width)/2,(screenHeight-height)/2,width ,height);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() { jPanel1 = new javax.swing.JPanel();
useButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
sureButton = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jTabbedPane1 = new javax.swing.JTabbedPane();
jPanel3 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel6 = new javax.swing.JPanel();
datePanel = new javax.swing.JPanel();
timePanel = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle(" 日期和时间 属性"); useButton.setText("应用(A)"); cancelButton.setText("取消"); sureButton.setText("确认"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap(240, Short.MAX_VALUE)
.addComponent(sureButton, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cancelButton, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(useButton))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(useButton)
.addComponent(cancelButton)
.addComponent(sureButton))
); getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END); jPanel2.setLayout(new java.awt.GridLayout()); jPanel3.setBackground(new java.awt.Color(255, 255, 255)); jLabel1.setText("当前时区:中国标准时间"); jPanel6.setLayout(new java.awt.GridLayout()); datePanel.setBackground(new java.awt.Color(255, 255, 255));
datePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("日期(D)")); javax.swing.GroupLayout datePanelLayout = new javax.swing.GroupLayout(datePanel);
datePanel.setLayout(datePanelLayout);
datePanelLayout.setHorizontalGroup(
datePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 209, Short.MAX_VALUE)
);
datePanelLayout.setVerticalGroup(
datePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 207, Short.MAX_VALUE)
); jPanel6.add(datePanel); timePanel.setBackground(new java.awt.Color(255, 255, 255));
timePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("时间(T)")); javax.swing.GroupLayout timePanelLayout = new javax.swing.GroupLayout(timePanel);
timePanel.setLayout(timePanelLayout);
timePanelLayout.setHorizontalGroup(
timePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 209, Short.MAX_VALUE)
);
timePanelLayout.setVerticalGroup(
timePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 207, Short.MAX_VALUE)
); jPanel6.add(timePanel); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE)
.addComponent(jLabel1))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, 236, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel1)
.addContainerGap())
); jTabbedPane1.addTab("日期和时间", jPanel3); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 470, Short.MAX_VALUE)
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 271, Short.MAX_VALUE)
); jTabbedPane1.addTab("时区", jPanel4); javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 470, Short.MAX_VALUE)
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 271, Short.MAX_VALUE)
); jTabbedPane1.addTab("Internet时间", jPanel5); jPanel2.add(jTabbedPane1); getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER); pack();
}// </editor-fold> // Variables declaration - do not modify
private javax.swing.JButton cancelButton;
private javax.swing.JPanel datePanel;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JButton sureButton;
private javax.swing.JPanel timePanel;
private javax.swing.JButton useButton;
// End of variables declaration
}
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.util.Calendar;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;public class ClockTest { public static void main(String[] args) {
ClockFrame cf = new ClockFrame();
cf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cf.setVisible(true);
}}class ClockFrame extends JFrame {
private static final long serialVersionUID = 1L;
private ClockPanel panel;
private Calendar calendar;
public ClockFrame() {
setTitle("Clock");
setResizable(false);
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screen = kit.getScreenSize();
int screenX = screen.width;
int screenY = screen.height;
setLocation(screenX / 3,screenY / 3);
ActionListener listener = new ActionListener(){ public void actionPerformed(ActionEvent e) {
calendar = getClock();
String h = String.valueOf(calendar.get(Calendar.HOUR_OF_DAY));
String m = String.valueOf(calendar.get(Calendar.MINUTE));
String s = String.valueOf(calendar.get(Calendar.SECOND));
TextPanel tp = new TextPanel(h,m,s);
add(tp,BorderLayout.NORTH);
panel = new ClockPanel(h,m,s);
add(panel,BorderLayout.CENTER);
pack();
}
};
new Timer(1000,listener).start();
}
public Calendar getClock() {
Calendar calendar = Calendar.getInstance();
return calendar;
}
}class TextPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JTextField hourField;
private JTextField minuteField;
private JTextField secondField;
public TextPanel(String h,String m,String s) {
setBackground(Color.white);
add(new JLabel("时钟:"));
hourField = new JTextField(h,3);
hourField.setEditable(false);
add(hourField);
add(new JLabel("分钟:"));
minuteField = new JTextField(m,3);
minuteField.setEditable(false);
add(minuteField);
add(new JLabel("秒钟:"));
secondField = new JTextField(s,3);
secondField.setEditable(false);
add(secondField);
}
}class ClockPanel extends JPanel {
private static final long serialVersionUID = 1L;
private double seconds = 0;
private double minutes = 0;
private double hours = 0; private int RADIUS = 100;
private double SECOND_HAND_LENGTH = 0.8 * RADIUS;
private double MINUTE_HAND_LENGTH = 0.8 * RADIUS;
private double HOUR_HAND_LENGTH = 0.7 * RADIUS;
private int centerX = 0;
private int centerY = 0;
public ClockPanel(String h,String m,String s) {
setBackground(Color.pink);
hours = Double.parseDouble(h);
minutes = Double.parseDouble(m);
seconds = Double.parseDouble(s);
setPreferredSize(new Dimension(2 * RADIUS + 100,2 * RADIUS + 100));
} public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D gs = (Graphics2D)g;
centerX = this.getWidth() / 2;
centerY = this.getHeight() / 2;
gs.setColor(Color.GREEN);
gs.drawString("张学义", centerX - 20, centerY - RADIUS / 2);
gs.drawString("MADE IN CHINA", centerX - 40, centerY + RADIUS / 2);
gs.setColor(Color.WHITE);
for(double nlLoop = 0; nlLoop <= 2; nlLoop = nlLoop + 0.1) {
Ellipse2D circle = new Ellipse2D.Double(
centerX - RADIUS + 15 + nlLoop,
centerY - RADIUS + 15 + nlLoop,
2 * (RADIUS - 15),
2 * (RADIUS - 15));
gs.draw(circle);
}
for(double nlLoop = 0; nlLoop <= 2; nlLoop = nlLoop + 0.1) {
Ellipse2D circle = new Ellipse2D.Double(
centerX - RADIUS - 9 + nlLoop,
centerY - RADIUS - 9 + nlLoop,
2 * (RADIUS + 9),
2 * (RADIUS + 9));
gs.draw(circle);
}
String[] timer = {"Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ"};
gs.setColor(Color.RED);
int gX = centerX - 3;
int gY = centerY - RADIUS + 5;
for(int i = 0; i < 12; i ++) {
int x = (int) (gX + RADIUS * Math.sin(2 * Math.PI * (i + 1) / 12));
int y = (int) (gY + RADIUS * (1.0 - Math.cos(2 * Math.PI * (i + 1) / 12)));
gs.drawString(timer[i], x, y);
}
double secondAngle = Math.toRadians(360 * seconds / 60);
drawHand(gs,secondAngle,SECOND_HAND_LENGTH,"s");
double minuteAngle = Math.toRadians(360 * (minutes + seconds / 60) / 60);
drawHand(gs,minuteAngle,MINUTE_HAND_LENGTH,"m");
double hourAngle = Math.toRadians(360 * (hours - 12) / 12 + 360 * minutes / (60 * 12));
drawHand(gs,hourAngle,HOUR_HAND_LENGTH,"h");
}
private void drawHand(Graphics2D gc,double angle,double hand,String l) {
Point2D center = new Point2D.Double(centerX,centerY);
Point2D end = new Point2D.Double(
centerX + hand * Math.sin(angle),
centerY - hand * Math.cos(angle));
if(l.equals("h")) {
gc.setColor(Color.RED);
} else if(l.equals("m")) {
gc.setColor(Color.green);
} else if(l.equals("s")) {
gc.setColor(Color.BLUE);
}
gc.draw(new Line2D.Double(center,end));
}
}