It simply creates a JFrame window. How to make it so that there is no standard "maximize" button?
1 answer
Something no special information. There is an option only to kill the default scenery setUndecorated(true); and then add your custom panel, buttons again and hang up handlers on these buttons.
Here is the code, I tried to explain with comments, as far as I could. It seems everything is clear.
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; /** * Created by iprogrammer on 13.06.2016. */ public class Main extends JFrame { JPanel p; JMenuBar mb; JButton close, min; int pX,pY; public Main() { createAndShowGUI(); } private void createAndShowGUI() { // Custom look and feel try { UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); }catch(Exception e){ } setDefaultCloseOperation(EXIT_ON_CLOSE); // Π£Π±ΠΈΠ²Π°Π΅ΠΌ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΈΡ (Ρ.Π΅. ΠΊΠ½ΠΎΠΏΠΊΠΈ) setUndecorated(true); // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΠ°Π½Π΅Π»Ρ ΡΠ²Π΅ΡΡ
Ρ mb = new JMenuBar(); mb.setLayout(new BorderLayout()); // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ°Π½Π΅Π»Ρ p = new JPanel(); p.setOpaque(false); p.setLayout(new GridLayout(1,2)); // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ close = new JButton("x"); min = new JButton("-"); // ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ min.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae) { setState(ICONIFIED); // ΠΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΎΠΊΠ½Π° } }); // ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π·Π°ΠΊΡΡΡΠΈΡ close.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae) { System.exit(0); // Π·Π°ΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ } }); min.setFocusPainted(false); close.setFocusPainted(false); // ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ p.add(min); p.add(close); // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΏΡΠ°Π²Π° mb.add(p, BorderLayout.EAST); setJMenuBar(mb); /******** ΠΠ’Π Π§Π’ΠΠ ΠΠΠ ΠΠ’Π―ΠΠΠΠΠ’Π¬ ΠΠΠΠ (ΠΠΠ§ΠΠΠ) ************/ // Add mouse listener for JMenuBar mb mb.addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent me) { // Π±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΡΠΊΠ° ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΠΈΡ
pX=me.getX(); pY=me.getY(); } }); // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ MouseMotionListener ΡΡΠΎΠ± ΠΏΠΎΠΉΠΌΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ mb.addMouseMotionListener(new MouseAdapter(){ public void mouseDragged(MouseEvent me) { setLocation(getLocation().x+me.getX()-pX,getLocation().y+me.getY()-pY); } }); /******** ΠΠ’Π Π§Π’ΠΠ ΠΠΠ ΠΠ’Π―ΠΠΠΠΠ’Π¬ ΠΠΠΠ (ΠΠΠΠΠ¦) ************/ // ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°Π΄ΠΏΠΈΡΡ final JLabel label = new JLabel("Hello World", SwingConstants.CENTER); label.setFont(label.getFont().deriveFont(40.0f)); getContentPane().add(label); // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ setSize(400,400); setVisible(true); //setShape(new java.awt.geom.RoundRectangle2D.Double(0,0,getWidth(),getHeight(),5,5)); setLocationRelativeTo(null); } public static void main(String args[]) { new Main(); } } It turns out something like this:
The rest, I think, you can finish yourself.
|

frame.setResizable(false);will not work? Or just need to hide? - Alexey Shimansky