Mercurial > hg > pub > prymula > com
view kopieckreta/src/KopiecKreta.java @ 0:2787f5e749ae
INIT
author | prymula <prymula76@outlook.com> |
---|---|
date | Thu, 21 Sep 2023 22:33:57 +0200 |
parents | |
children | 489244127359 |
line wrap: on
line source
/* Kopiec Kreta - gra w odgadywanie słów ver. 0.4.0-beta autor: Przemysław R. Pietraszczyk data: 2020-09-30 licencja: Public Domain słownik pochodzi z: sjp.pl */ package src; import java.awt.*; // Toolkit import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JButton; //import javax.swing.JComponent; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.Box; import javax.swing.JTextArea; import javax.swing.JDialog; import javax.swing.JTextField; import javax.swing.JCheckBox; import javax.swing.BorderFactory; import javax.swing.WindowConstants; import java.awt.event.*; import java.awt.event.ActionListener; //import java.awt.event.KeyListener; import java.awt.event.ActionEvent; import java.awt.event.WindowEvent; import java.awt.event.WindowAdapter; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.ItemEvent; //import java.awt.event.KeyEvent; import java.util.*; //Timer //import java.awt.Robot; import java.awt.Toolkit; import java.beans.*; //property change stuff import java.io.BufferedReader; import java.io.InputStream; import java.io.OutputStream; import java.io.InputStreamReader; import java.io.IOException; public class KopiecKreta extends JTextArea implements ActionListener { static JMenuBar menuBar; static JMenu menu, info, menu2; static JMenuItem menuItem, menuExit, menuInfo, menuPref; static JFrame frame; static boolean go=false; static Timer timer = new Timer(); static String content; final static int NRINGS=11; final static int NCHAR=23; //32; static MyResource res = new MyResource(); static wavResource wav; static Ring []truering = new Ring[NRINGS]; static Ring []falsering = new Ring[NRINGS]; static String [] mound = new String[20]; // tekst do wyswietlenia przez paint static JTextArea textArea; static JPanel startScreen; static int activeRing; // indeks ringu na którym jest prowadzona aktualnie gra static KopiecKreta kk; static Actions actions; final static String CONSTCH="1234"; //final static Character[] charsInStock= {'a', 'ą', 'b', 'c', 'ć', 'd', 'e', 'ę', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'ł', 'm', 'n', 'ń', 'o', 'ó', 'p', 'r', 's', 'ś', 't', 'u', 'w', 'y', 'z', 'ż', 'ź'}; final static Character[] charsInStock= {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'w', 'y', 'z'}; static ArrayList<String> cheatSheet; static int pointsForTheRing; static int pointsFOrTheMund; static int totalScore, level; static boolean cheatActivate=false; static SoundDialog sounddialog; //static ResetDialog resetdialog; //static GetNameDialog getNameDialog; //Boolean runSoundDialog=Boolean.valueOf(false); static ConfigFile configfile; //static char pressKey=' '; public KopiecKreta() { //GridBagLayout gridbag = (GridBagLayout)getLayout(); //GridBagConstraints c = new GridBagConstraints(); menuBar = new JMenuBar(); menu = new JMenu("Plik"); menuBar.add(menu); menu2 = new JMenu("Opcje"); menuBar.add(menu2); // przenosi INFO na prawa strone menuBar.add(Box.createHorizontalGlue()); info = new JMenu("Info"); // kierunek wyswietlania menu info.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); menuBar.add(info); menuItem = new JMenuItem("Nowa Gra", null); menuItem.setActionCommand("MenuItem1"); menuItem.addActionListener(this); menuItem.setToolTipText("Rozpoczyna nową grę."); menu.add(menuItem); //menuItem = new JMenuItem("Sala sławy", null); //menuItem.setActionCommand("MenuItem11"); //menuItem.addActionListener(this); //menuItem.setToolTipText("Wyświetla najlepsze wyniki"); //menu.add(menuItem); menu.addSeparator(); menuExit = new JMenuItem("Zakończ", null); menuExit.setActionCommand("MenuItem2"); menuExit.addActionListener(this); menuExit.setToolTipText("Wyjście z programu"); menu.add(menuExit); menuPref = new JMenuItem("Preferencje dzwięku",null); menuPref.setActionCommand("MenuItem4"); menuPref.addActionListener(this); menuPref.setToolTipText("Preferencje dotyczące dzwięku"); menu2.add(menuPref); /* menuPref = new JMenuItem("Resetowanie",null); menuPref.setActionCommand("MenuItem5"); menuPref.addActionListener(this); menuPref.setToolTipText("Resetowanie najlepszych wyników"); menu2.add(menuPref); */ menuInfo = new JMenuItem("Pomoc", null); menuInfo.setActionCommand("MenuItem33"); menuInfo.addActionListener(this); menuInfo.setToolTipText("Samouczek"); info.add(menuInfo); menuInfo = new JMenuItem("O Programie", null); menuInfo.setActionCommand("MenuItem3"); menuInfo.addActionListener(this); menuInfo.setToolTipText("Informacje o programie"); info.add(menuInfo); //addKeyListener(this); //actions = new Actions(); //addKeyListener(actions); //setFocusable(true); } public void actionPerformed(final ActionEvent e) { // Nowa gra if(e.getActionCommand().equals("MenuItem1")) { //getNameDialog.initUI(configfile, frame, getNameDialog.runGetNameDialog); //getNameDialog.runGetNameDialog=true; //if (getNameDialog.go){ activeRing=10; totalScore=0; pointsForTheRing=0; pointsFOrTheMund=0; level=1; //frame.remove(startScreen); //frame.add(textArea); startScreen.setVisible(false); textArea.setVisible(true); create_secret_mound(); create_real_mound(); // generuje prawdziwy kopiec cheatSheet = new ArrayList<String>(); setCharCheatSheet (); go=true; setDisplayMound(); // } } // Zakonczenie else if(e.getActionCommand().equals("MenuItem2")) { System.exit(0); } // O Programie else if(e.getActionCommand().equals("MenuItem3")) { String s1=" Port mojej gry pierwotnie napisanej dla Androida 2.3\n\n", s2=" Program napisany na podstawie fragmentów kodów,\n", s3=" wyszukanych w wyszukiwarce Google,\n", s4=" plus własna inwencja\n\n", s5=" Autor zarzeka się że nigdy nie posiadał, ani nie posiada\n", s6=" żadnej ksiażki na temat Javy.\n", s7="Oraz nie przeczytał ani jednej ksiązki na temat tego języka!\n\n", s8=" Przemysław R. Pietraszczyk - jesień 2020\n", s9=" Licencja: Public Domain\n\n", s10=" Stworzono w oparciu o OpenJDK 11 oraz ANT\n\n", s11=" o/s: "+configfile.osName+" ver. "+configfile.osVersion+"\n", s12=" java ver: "+configfile.jvmVersion; JOptionPane.showMessageDialog(frame, s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12, "Kopiec Kreta 0.4.0-beta", JOptionPane.PLAIN_MESSAGE); } else if(e.getActionCommand().equals("MenuItem33")) { String s1="Celem gry jest odgadnięcie wszyskich zakrytych pól.\n", s2="Rozgrywkę rozpoczyna się od dolnego pierścienia.\n", s3="Po odgadnięciu wszyskich liter w danym pierścieniu,\n", s4="rozgrywka przenosi się na kolejny, wyższy ring.\n", s5="Po odgadnięciu wszystkich liter, gracz pytany jest\n", s6="o chęć gry na opcjonalnym następnym poziomie.\n\n", s7="UWAGA ! Caps Lock - bez znaczenia !\n", s8="\n"; JOptionPane.showMessageDialog(frame, s1+s2+s3+s4+s5+s6+s7+s8, "Pomoc", JOptionPane.PLAIN_MESSAGE); } else if(e.getActionCommand().equals("MenuItem4")) { sounddialog.initUI(configfile, frame, sounddialog.runSoundDialog); sounddialog.runSoundDialog=true; } /* else if(e.getActionCommand().equals("MenuItem5")) { resetdialog.initUI(configfile); } */ // sala sławy /* else if(e.getActionCommand().equals("MenuItem11")) { } */ //System.out.println("ACTION PERFORMED " + e); } private static void createAndShowGUI() { frame=new JFrame("Kopiec Kreta"); //Robot robot; // menuBar z konstruktora final int frameWidth = 250; final int frameHeight = 460; final int GNOMEPANEL=80; // nieco niżej niż panel final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); //frame.setBounds((int) screenSize.getWidth() - frameWidth, // (int) screenSize.getHeight() - frameHeight, frameWidth, frameHeight); frame.setBounds((int) screenSize.getWidth() - frameWidth, GNOMEPANEL, frameWidth, frameHeight); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); sounddialog = new SoundDialog(); //resetdialog = new ResetDialog(); //getNameDialog = new GetNameDialog(); textArea = new KopiecKreta(); startScreen = new StartScreen(); //textArea.setFont(new Font("Serif", Font.ITALIC, 18)); textArea.setFont(new Font("Serif", Font.BOLD, 18)); textArea.setLineWrap(true); //nowe textArea.setWrapStyleWord(true); // nowe textArea.setEditable(false); textArea.setBounds(5,5,240,430); frame.add(textArea); textArea.setVisible(false); frame.add(menuBar); frame.add(startScreen); startScreen.setFont(new Font("Serif", Font.BOLD, 18)); startScreen.setBounds(5,5,240,430); frame.setJMenuBar(menuBar); frame.setLayout(null); frame.setSize(250,500); // 400 x 400 frame.setVisible(true); actions = new Actions(); frame.addKeyListener(actions); frame.setFocusable(true); textArea.setForeground(Color.BLACK); textArea.setBackground(Color.GREEN); // zapobiega utracie KeyEvent po wyjściu z SoundDialog i ResetDialog frame.addFocusListener(new FocusListener(){ public void focusGained(FocusEvent e){ //System.out.println("Focus GAINED:"+e); } public void focusLost(FocusEvent e){ //System.out.println("Focus LOST:"+e); // FIX FOR GNOME/XWIN FOCUS BUG e.getComponent().requestFocus(); } }); try { configfile = new ConfigFile(); }catch (IOException e){} configfile.load(); /* try { // obiekt robot posiada metode do pobierania koloru pixela robot = new Robot(); robot.mouseMove(screenSize.width-100, 200); robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); }catch (AWTException e) {} frame.setAlwaysOnTop(true); */ timer.schedule(new KeyTicks(), 0, 1000); // lepiej 1000 } // dodaje punkty za pierścień i kazuje pozostałe litery ściągi static public void addScores(){ int n; pointsForTheRing=0; if (!cheatActivate){ for (int i=0;i< cheatSheet.size();i++){ pointsForTheRing++; } pointsFOrTheMund+=pointsForTheRing; } //System.out.println("Naliczyłem "+pointsForTheRing+" punktów za ring"); } // zapełnia tablice ze znakami do podpowiedzi static private void setCharCheatSheet (){ for (int i=0; i<NCHAR; i++){ // przepisujemy kolejno znaki do listy stringów char c= Character.toUpperCase(charsInStock[i]); cheatSheet.add(String.valueOf(c)); } } static private void refreshCheatSheet(int n){ String t=""; cheatSheet.remove(n); for (int i=0;i< cheatSheet.size();i++){ t+=cheatSheet.get(i); } } // szuka znaku w tablicy z podpowiedzia static private int searchCharChaetSheet(char c){ String s=""; String sc=""; //String test=""; for (int i=0;i< cheatSheet.size();i++){ s=cheatSheet.get(i); sc = String.valueOf(c); // test+=sc; if (s.equals(sc)) { return i; } } //System.out.println("Nie odnalazłem znaku:"+sc); return -1; } static private void create_real_mound(){ int n_char=3; String r=""; for (int i=0; i<NRINGS; i++){ truering[i] = new Ring(res.getDirectory(n_char)); n_char++; for (int j=0;j<truering[i].getLength();j++){ String _r=Character.toString(truering[i].getChar(j)); r+=_r; } r+="\n"; } System.out.println(r); } public static void create_secret_mound(){ // kodujemy od 3 liter String s="???"; for (int i=0; i<NRINGS; i++){ falsering[i] = new Ring(s); s+="?"; } } public static void main(final String[] args) { try { res.read(); //wav = new wavResource(); //wav.loadWav(); //wav.initWav(); }catch (Exception e) { e.printStackTrace(); } javax.swing.SwingUtilities.invokeLater(new RunnableImplementation()); } static private void setDisplayMound(){ String sr = new String(); String r=""; textArea.setText(null); sr+="\n"; // i=1 ponieważ pomijamy 3 literowy ring for (int i=1;i<NRINGS;i++){ //String r=""; for (int j=0;j<truering[i].getLength();j++){ String _r=Character.toString(truering[i].getChar(j)); r+=_r; } //System.out.println(r); r=""; sr+=" "; if (i==activeRing){ sr+=">"; } else sr+=" "; for (int j=0;j<falsering[i].getLength();j++){ String _s=Character.toString(falsering[i].getChar(j)); sr +=_s; } if (i==activeRing){ sr+="<"; } mound[i]=sr; //System.out.println("mound["+i+"] "+mound[i]); textArea.append(mound[i]+"\n"); sr=""; } textArea.append("\n\n"); for (int i=0; i<cheatSheet.size();i++){ textArea.append(cheatSheet.get(i)); textArea.append(" "); } } private static final class RunnableImplementation implements Runnable { public void run(){ wav = new wavResource(); createAndShowGUI(); } } public static void unhideWords(){ for (int j=0;j<truering[activeRing].getLength();j++){ falsering[activeRing].setChar(truering[activeRing].getChar(j),j); } } static class KeyTicks extends TimerTask { int cw=0; static char pressKey='Q'; static char lastKey='Q'; static boolean firstRun=true; int n=0; /* FIXME - miga gdy odnaleziono litere ? */ public void run() { ArrayList<Integer> indexExist = new ArrayList<Integer>(); int returnIndex; pressKey=actions.getKey(); if (go) { wav.stop(); indexExist=checkInstance(pressKey); for (int exist: indexExist){ falsering[activeRing].setChar(pressKey,exist); wav.PlayFlag=true; if (lastKey != pressKey) { if (sounddialog.soundAccept()){ System.out.println("Dzwięk akceptuje"); wav.play("/smooth-ok.wav"); } else System.out.println("Dzwięk NIE akceptuje"); } } if (lastKey != pressKey && indexExist.isEmpty() && !firstRun) { //if (lastKey != pressKey && indexExist.isEmpty()) { wav.PlayFlag=true; if (sounddialog.soundAccept()){ System.out.println("Dzwięk akceptuje"); wav.play("/bass-bad.wav"); } else System.out.println("Dzwięk NIE akceptuje"); } lastKey=pressKey; returnIndex = searchCharChaetSheet(pressKey); if (returnIndex != -1){ refreshCheatSheet(returnIndex); } setDisplayMound(); pressKey=' '; indexExist.clear(); if (actions.getCheat().equals(CONSTCH)){ //pointsForTheRing=0; actions.resetCheat(); cheatActivate=true; unhideWords(); } if (checkFullRing()) { totalScore+=pointsForTheRing; setCharCheatSheet (); setDisplayMound(); } firstRun=false; } } static private boolean checkFullRing() { if (truering[activeRing].getString().equals(falsering[activeRing].getString())){ //System.out.println("Czy zaliczony pierścień ? activeRing:"+activeRing); if (activeRing >1){ addScores(); cheatActivate=false; // nowa ściąga cheatSheet = new ArrayList<String>(); activeRing--; return true; } else { go=false; setDisplayMound(); if(activeRing==1){ String s1="Ukończyłeś poziom "+level+" !\n", s2="Na tym poziomie uzyskałeś "+pointsFOrTheMund+" punktów.\n", s3="Póki co ugrałeś "+totalScore+" punktów !\n\n", s4="Kontynujesz grę ?"; // moze boolean ? int dialogButton = JOptionPane.YES_NO_OPTION; int answer = JOptionPane.showConfirmDialog (frame, s1+s2+s3+s4,"Komunikat", dialogButton); if(answer == JOptionPane.YES_OPTION) { activeRing=10; go=true; level++; create_secret_mound(); create_real_mound(); // generuje prawdziwy kopiec setDisplayMound(); pointsFOrTheMund=0; } if(answer == JOptionPane.NO_OPTION) { System.exit(0); } } } } return false; } // sprawdza czy rządana litera znajduje sie w pierscieniu static private ArrayList<Integer> checkInstance(char key){ ArrayList<Integer> indexExist = new ArrayList<Integer>(); for (int i=0; i<truering[activeRing].getLength();i++){ if (truering[activeRing].getChar(i) == key) { indexExist.add(i); } } /* if (indexExist.size()!=0) { changeView=true; } */ return indexExist; } } static class Ring { char c[]; int l=0; // dlugosc public Ring(String s){ //System.out.println("Z Ring constructor: "+s+" dlugosc: "+s.length()); c = new char[s.length()+2]; c =s.toCharArray(); l=s.length(); } public char getChar(int poz){ return (char) c[poz]; } public void setChar(char _c,int p){ c[p]=_c; } public int getLength(){ return l; } public String getString(){ String sr = new String(); for (int j=0;j<l;j++){ String _s=Character.toString(c[j]); sr +=_s; } return sr; } } } class SoundDialog implements ItemListener, ActionListener{ JCheckBox chkBox1; JFrame frame; boolean sound = true; ConfigFile config; public Boolean runSoundDialog=false; protected void initUI(ConfigFile cf, JFrame f, Boolean run) { if (!run) { frame = new JFrame("Zapytanko"); frame.getContentPane().setSize(new Dimension(300,200)); // nie działa frame.getContentPane().setLayout(new GridBagLayout()); frame.setAlwaysOnTop(true); GridBagConstraints c = new GridBagConstraints(); // nadpisanie metody zamykania okna frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ev) { runSoundDialog=false; frame.dispose(); } // zapobiega minimalizacji okna dialogowego public void windowIconified(WindowEvent we) { frame.setState(JFrame.NORMAL); //JOptionPane.showMessageDialog(frame, "Cant Minimize"); } }); JLabel label = new JLabel(" "); JButton button = new JButton("Zatwierdź"); chkBox1= new JCheckBox("Odtwarzaj dźwięk"); config=cf; sound = cf.load(); System.out.println("Dzwiek: "+sound); chkBox1.setSelected(sound); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; c.weighty = 1.0; c.gridwidth = 3; c.gridx = 0; c.gridy = 0; frame.getContentPane().add(chkBox1,c); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; c.weighty = 1.0; c.gridwidth = 3; c.gridx = 0; c.gridy = 1; frame.getContentPane().add(label,c); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; c.weighty = 1.0; c.anchor = GridBagConstraints.PAGE_END; //bottom of space c.gridwidth = 3; c.gridx = 0; c.gridy = 2; frame.getContentPane().add(button,c); chkBox1.addItemListener(this); button.addActionListener(this); if (cf.osName.equals("Linux")) frame.setUndecorated(true); chkBox1.setBorder(BorderFactory.createMatteBorder(20, 20, 20, 20, Color.RED)); // w tym wypadku kolor nie ma znaczenia frame.getRootPane().setBorder(BorderFactory.createMatteBorder(10, 10, 10, 10, Color.RED)); frame.pack(); // pojawi się nad oknem rodzica frame.setLocationRelativeTo(f); frame.setResizable(false); frame.setVisible(true); } } public void itemStateChanged(ItemEvent e) { Object source = e.getItemSelectable(); if (source == chkBox1) { //System.out.println("Zaznaczono dzwiek"); sound = true; } if (e.getStateChange() == ItemEvent.DESELECTED) { //System.out.println("Odznaczono dzwiek"); sound = false; } } public void actionPerformed(ActionEvent e) { frame.setVisible(false); config.save(sound); runSoundDialog=false; //System.out.println("Zapisuje dzwięk: "+sound); } public boolean soundAccept(){ return sound; } } /* class ResetDialog implements ItemListener, ActionListener{ JCheckBox chkBox1; JFrame frame; boolean reset = false; protected void initUI(ConfigFile cf) { frame = new JFrame("Zapytanko"); JPanel mainPanel; JButton button; frame.getContentPane().setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); button = new JButton("Zatwierdź"); //chkBox1= new JCheckBox("Odtwarzaj dźwięk"); chkBox1= new JCheckBox("Zresetuj najlepsze wyniki"); chkBox1.setSelected(reset); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; c.weighty = 1.0; //c.anchor = GridBagConstraints.PAGE_END; //bottom of space c.gridwidth = 3; c.gridx = 0; c.gridy = 0; frame.getContentPane().add(chkBox1,c); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; c.weighty = 1.0; c.anchor = GridBagConstraints.PAGE_END; //bottom of space c.gridwidth = 3; c.gridx = 0; c.gridy = 2; frame.getContentPane().add(button,c); chkBox1.addItemListener(this); button.addActionListener(this); frame.pack(); frame.setLocationRelativeTo(null); frame.setResizable(false); frame.setVisible(true); } public void itemStateChanged(ItemEvent e) { //t index = 0; //ar c = '-'; Object source = e.getItemSelectable(); if (source == chkBox1) { //dex = 0; System.out.println("Zaznaczono dzwiek"); reset = true; } if (e.getStateChange() == ItemEvent.DESELECTED) { System.out.println("Odznaczono dzwiek"); reset = false; } } public void actionPerformed(ActionEvent e) { frame.setVisible(false); System.out.println("jestem action"); } public boolean resetAccept(){ return reset; } } */ /* class GetNameDialog implements ActionListener, KeyListener { JTextField text; JFrame frame; public String namePlayer=""; public boolean go; ConfigFile config; public Boolean runGetNameDialog=false; protected void initUI(ConfigFile cf, JFrame f, Boolean run) { if (!run) { frame = new JFrame("Zapytanko"); frame.getContentPane().setSize(new Dimension(300,200)); // nie działa frame.getContentPane().setLayout(new GridBagLayout()); frame.setAlwaysOnTop(true); GridBagConstraints c = new GridBagConstraints(); // nadpisanie metody zamykania okna frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ev) { runGetNameDialog=false; frame.dispose(); } }); JLabel label1 = new JLabel(" "); JLabel label2 = new JLabel("Najperw się przedstaw:"); JButton button = new JButton("Zatwierdź"); button.setActionCommand("Button"); text = new JTextField(); //text.addActionListener(this); //text.setActionCommand("Text"); text.addKeyListener(this); text.setFocusable(true); text.requestFocus(); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; c.weighty = 1.0; c.gridwidth = 3; c.gridx = 0; c.gridy = 0; frame.getContentPane().add(label2,c); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; c.weighty = 1.0; c.gridwidth = 3; c.gridx = 0; c.gridy = 1; frame.getContentPane().add(text,c); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; c.weighty = 1.0; c.gridwidth = 3; c.gridx = 0; c.gridy = 2; frame.getContentPane().add(label1,c); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; c.weighty = 1.0; c.anchor = GridBagConstraints.PAGE_END; //bottom of space c.gridwidth = 3; c.gridx = 0; c.gridy = 3; frame.getContentPane().add(button,c); text.setEditable(true); if (namePlayer.length()!=0){ text.setText(namePlayer); text.selectAll(); } button.addActionListener(this); if (cf.osName.equals("Linux")) frame.setUndecorated(true); frame.getRootPane().setBorder(BorderFactory.createMatteBorder(10, 10, 10, 10, Color.RED)); frame.pack(); frame.setLocationRelativeTo(f); frame.setResizable(false); frame.setVisible(true); } } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("Button")) { frame.setVisible(false); namePlayer=text.getText(); runGetNameDialog=false; if (namePlayer.length()!=0){ go=true; } } else if(e.getActionCommand().equals("Text")) { String t= text.getText(); text.setText(t); text.selectAll(); } } @Override public void keyTyped(KeyEvent e) { } @Override public void keyReleased(KeyEvent event) { } @Override public void keyPressed(KeyEvent event) { if (event.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('a')) { System.out.println("OK"); } System.out.println("GETNAME"); String t= text.getText(); text.setText(t); text.selectAll(); } } /* private void readConfig() { try { InputStream is = this.getClass().getResourceAsStream("/config"); BufferedReader br=new BufferedReader(new InputStreamReader(is, "utf-8")); lineConfig = br.readLine(); } catch (Exception e){ e.printStackTrace(); } } */ /* private void writeConfig() { try { OutputStream is = this.getClass().getResourceAsStream("/config"); BufferedReader br=new BufferedReader(new InputStreamReader(is, "utf-8")); lineConfig = br.readLine(); } catch (Exception e){ e.printStackTrace(); } } */ //}