Witam !!
Pewnego pięknego dnia postanowiłem zabrać się za moją pracę projektową z javy 8-). I chcąc sobie ułatwić zadanie do tworzenia formatki skorzystałem z wbudowanej funkcjonalności netbeansa. Otóż stworzyłem sobie ramkę z kilkoma panelami które rozmieściłem ładnie na całej formatce. Problem pojawił się kiedy chciałem umieścić zegar w jednym z zaprojektowanych panel. A mianowicie:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* NewJFrame.java
*
* Created on 2009-01-27, 21:49:27
*/
/**
*
* @author d660
*/
public class NewJFrame extends javax.swing.JFrame {
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
PanelCzasu = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
PanelCzasu.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
javax.swing.GroupLayout PanelCzasuLayout = new javax.swing.GroupLayout(PanelCzasu);
PanelCzasu.setLayout(PanelCzasuLayout);
PanelCzasuLayout.setHorizontalGroup(
PanelCzasuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 378, Short.MAX_VALUE)
);
PanelCzasuLayout.setVerticalGroup(
PanelCzasuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 48, Short.MAX_VALUE)
);
jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 171, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 195, Short.MAX_VALUE)
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel4.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 378, Short.MAX_VALUE)
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(PanelCzasu, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(PanelCzasu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(136, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel PanelCzasu;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
// End of variables declaration
}
To oczywiście przykład, żeby za bardzo nie zagmatwać. W każdym razie mając taka formatkę z czterema panelami, do górnego panela (PanelCzasu) próbuje wstawić zegar wraz z funkcją daty. Ale z racji tego, że jestem raczej początkującym programistą nie za bardzo mi to wychodzi. Tak więc zwracam się do was o pomoc bo inaczej dostane na łeb :D. A oto kod zegara który próbuje wrzucić do górnego panelu:
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class GraficznyZegar {
public static void main(String args[]){
JFrame okno=new JFrame("Zegar");
okno.setSize(400,150);
Panel panel=new Panel();
okno.getContentPane().add(panel);
okno.setDefaultCloseOperation(3);
okno.setVisible(true);
}
}
class Panel extends JPanel implements Runnable{
int rok,mc,dzien,godz,min,sek;
String smc,sdzien,sgodz,smin,ssek;
Thread watek=null;
public Panel(){
watek=new Thread(this);
watek.start();
}
public void paintComponent(Graphics g){
g.clearRect(0,0,400,150);
Font czcionka=new Font("Monospaced",Font.BOLD,30);
g.setFont(czcionka);
if(mc<9){ smc="0"; } else smc="";
if(dzien<10){ sdzien="0"; } else sdzien="";
g.drawString(rok+"."+smc+(mc+1)+"."+sdzien+dzien,70,40);
if(godz<10){ sgodz="0"; } else sgodz="";
if(min<10){ smin="0"; } else smin="";
if(sek<10){ ssek="0"; } else ssek="";
g.drawString(sgodz+godz+":"+smin+min+":"+ssek+sek,70,80);
}
public void run(){
while(true){
GregorianCalendar czas=new GregorianCalendar();
rok=czas.get(Calendar.YEAR);
mc=czas.get(Calendar.MONTH);
dzien=czas.get(Calendar.DAY_OF_MONTH);
godz=czas.get(Calendar.HOUR_OF_DAY);
min=czas.get(Calendar.MINUTE);
sek=czas.get(Calendar.SECOND);
try{
Thread.sleep(1000);
}catch(InterruptedException e){
System.out.println("Wyst�pi� b��d");}
repaint();
}
}
}