Shalom napisał(a)
I ty mówisz ze masz doświadczenie z OOP? o_O
Mam nawet kilkuletnie ;-) I podejrzewam, że mógłbym z Tobą pogadac jak równy z równym ;-) A może i nie? :-) W każdym razie jak jesteś z Poznania to z chęcią pogadałbym przy piwie, byłoby mi bardzo miło zdobyc swojego nauczyciela Java.
Shalom napisał(a)
Zasadniczo w aplikacji okienkowej w main() widzę miejsce tylko na:
- stworzenie okienka które jest naszym MainWindow
- ustawienie odpowiedniego lookAndFeel jeśli chcemy
I tyle. Absolutnie nic więcej.
Rozumiem że z pliku chcesz wczytać dane potrzebne do inicjalizacji okienka albo innego komponenetu? To robisz to na przykład w jego konstruktorze.
Ok, czy możesz mi wskazac błędy popełnione w poniższej prostej aplikacji, która posiada jakieś okienko, które można schowac do traya (a schowane co jakiś czas pojawia się, ale żeby nie komplikowac nie wklejałem tego tutaj)
Klasa główna:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package simplewords;
/**
*
*/
public class SimpleWords {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws InterruptedException {
Application.setup();
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package simplewords;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
*
*/
public class Application {
public static void setup() {
SysTray sysTray = new SysTray();
TrayIcon icon = new TrayIcon(Toolkit.getDefaultToolkit().createImage("c://generic_chat.png"),"Two clicks to SimpleWords!", sysTray.createPopupMenu());
icon.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Window window = new Window();
window.setup();
}
});
try {
SystemTray.getSystemTray().add(icon);
} catch (Exception e) {
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package simplewords;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.PopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import javax.swing.Icon;
import javax.swing.plaf.metal.MetalIconFactory;
public class SysTray {
public Image getImage() throws HeadlessException {
Icon defaultIcon = MetalIconFactory.getTreeComputerIcon();
Image img = new BufferedImage(defaultIcon.getIconWidth(),
defaultIcon.getIconHeight(),
BufferedImage.TYPE_4BYTE_ABGR);
defaultIcon.paintIcon(new Panel(), img.getGraphics(), 0, 0);
return img;
}
public PopupMenu createPopupMenu() throws
HeadlessException {
PopupMenu menu = new PopupMenu();
MenuItem addNewWord = new MenuItem("Add phrase");
MenuItem libraryManager = new MenuItem("Library manager");
MenuItem settings = new MenuItem("Settings");
MenuItem exit = new MenuItem("Exit");
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(addNewWord);
menu.add(libraryManager);
menu.add(settings);
menu.add(exit);
return menu;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package simplewords;
// window
import java.awt.Color;
import java.awt.Container;
import javax.swing.*;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;
import java.util.Timer;
/**
*
*/
public class Window extends JFrame {
/**
* Setup window properties and display
* @param disable_timer
*/
public void setup() {
final JFrame frame = new JFrame("SimpleWords!");
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
frame.setSize(450, 200);
//frame.setUndecorated(true);
frame.setLayout(new GridLayout(1, 2));
Color color = new Color(99, 207, 17);
Container content = frame.getContentPane();
content.setBackground(color);
frame.setIconImage(Toolkit.getDefaultToolkit().createImage("c://generic_chat.png"));
JLabel label = new JLabel(new ImageIcon("c://generic_chat_logo.png"));
frame.add(label);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension size = frame.getSize();
screenSize.height = screenSize.height / 2;
screenSize.width = screenSize.width / 2;
size.height = size.height / 2;
size.width = size.width / 2;
int y = screenSize.height - size.height;
int x = screenSize.width - size.width;
frame.setBackground(Color.yellow);
frame.setLocation(x, y);
frame.setVisible(true);
frame.addWindowStateListener(new WindowStateListener() {
@Override
public void windowStateChanged(WindowEvent e) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new FrameShowHideTask(frame), 6000, 6000);
}
});
}
}