मैं झूले का उपयोग करके एक त्वरित और गंदे एनीमेशन डाल रहा हूं। मैं चाहूंगा कि खिड़की अधिकतम हो। मैं उसे कैसे कर सकता हूँ?
जवाबों:
बशर्ते कि आप JFrame का विस्तार कर रहे हैं:
public void run() {
MyFrame myFrame = new MyFrame();
myFrame.setVisible(true);
myFrame.setExtendedState(myFrame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
}
setVisible(true)
पहले के बिना , फ्रेम सही आकार नहीं है। मैंने पहले और बाद में दोनों की कोशिश की setExtendedState()
, और setVisible()
पहले होना चाहिए।
JFrame
विरासत में Frame
) का उल्लेख करते हैं ।
कुछ इस तरह this.setExtendedState(this.getExtendedState() | this.MAXIMIZED_BOTH);
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame
{
public Test()
{
GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
this.setMaximizedBounds(env.getMaximumWindowBounds());
this.setExtendedState(this.getExtendedState() | this.MAXIMIZED_BOTH);
}
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
Test t = new Test();
t.setVisible(true);
}
}
|
? क्या यह एक करता है, और अगर यह विफल हो जाता है तो यह दूसरा करता है? या आप प्रोग्रामर पसंद का संकेत दे रहे हैं (इस कॉल में जाने के लिए ए। बी। में से एक को चुनें?) मैंने इस वाक्यविन्यास को पहले नहीं देखा है।
कैसे के बारे में JFrame.setExtendedState(JFrame.MAXIMIZED_BOTH)
?
मुझे यह संस्करण पसंद है:
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class Test
{
public static void main(String [] args)
{
final JFrame frame = new JFrame();
final GraphicsConfiguration config = frame.getGraphicsConfiguration();
final int left = Toolkit.getDefaultToolkit().getScreenInsets(config).left;
final int right = Toolkit.getDefaultToolkit().getScreenInsets(config).right;
final int top = Toolkit.getDefaultToolkit().getScreenInsets(config).top;
final int bottom = Toolkit.getDefaultToolkit().getScreenInsets(config).bottom;
final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
final int width = screenSize.width - left - right;
final int height = screenSize.height - top - bottom;
frame.setResizable(false);
frame.setSize(width,height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
JFrame को पूर्ण-स्क्रीन पर सेट करने का तरीका, MAXIMIZED_BOTH
विकल्प सेट करना है जो कि खड़ा है MAXIMIZED_VERT | MAXIMIZED_HORIZ
, जो क्रमशः फ्रेम को लंबवत और क्षैतिज रूप से अधिकतम करने के लिए सेट करता है।
package Example;
import java.awt.GraphicsConfiguration;
import javax.swing.JFrame;
import javax.swing.JButton;
public class JFrameExample
{
static JFrame frame;
static GraphicsConfiguration gc;
public static void main(String[] args)
{
frame = new JFrame(gc);
frame.setTitle("Full Screen Example");
frame.setExtendedState(MAXIMIZED_BOTH);
JButton button = new JButton("exit");
b.addActionListener(new ActionListener(){@Override
public void actionPerformed(ActionEvent arg0){
JFrameExample.frame.dispose();
System.exit(0);
}});
frame.add(button);
frame.setVisible(true);
}
}
मैंने इस थ्रेड और यहाँ के लोगों में समाधानों की कोशिश की है , लेकिन स्पष्ट रूप से setExtendedState(getExtendedState()|Frame.MAXIMIZED_BOTH);
कॉल करने के बाद सीधे कॉल setVisible(true);
करना मेरे पर्यावरण के लिए काम नहीं करता है (विंडोज 10, जेडीके 1.8, मेरा टास्कबार मेरी स्क्रीन के दाईं ओर है)। इस तरह से करना अभी भी बाईं, दाईं और नीचे की तरफ एक छोटी सी जगह छोड़ता है।
हालांकि मेरे लिए क्या काम किया, setExtendedState(...
जब खिड़की सक्रिय है, तो कॉल कर रहा है, जैसे:
public class SomeFrame extends JFrame {
public SomeFrame() {
// ...
setVisible(true);
setResizable(true);
// if you are calling setSize() for fallback size, do that here
addWindowListener (
new WindowAdapter() {
private boolean shown = false;
@Override
public void windowActivated(WindowEvent we) {
if(shown) return;
shown = true;
setExtendedState(getExtendedState()|JFrame.MAXIMIZED_BOTH);
}
}
);
}
}
मैंने इस कोड का उपयोग करते हुए समाप्त किया:
public void setMaximized(boolean maximized){
if(maximized){
DisplayMode mode = this.getGraphicsConfiguration().getDevice().getDisplayMode();
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration());
this.setMaximizedBounds(new Rectangle(
mode.getWidth() - insets.right - insets.left,
mode.getHeight() - insets.top - insets.bottom
));
this.setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH);
}else{
this.setExtendedState(JFrame.NORMAL);
}
}
इस विकल्प ने सभी विकल्पों में से सबसे अच्छा काम किया, जिसमें कई मॉनिटर समर्थन शामिल हैं। इसका एकमात्र दोष यह है कि टास्कबार ऑफसेट का उपयोग सभी मॉनिटरों पर किया जाता है कुछ कॉन्फ़िगरेशन।
@kgiannakakis उत्तर पूरी तरह से सही है, लेकिन अगर कोई इस समस्या में फंस गया है और लिनक्स पर जावा 6 का उपयोग करता है (उदाहरण के लिए, मिंट 19 दालचीनी), MAXIMIZED_BOTH राज्य कभी-कभी लागू नहीं होता है।
आप इस स्थिति को सेट करने के बाद कॉल () विधि को कॉल करने का प्रयास कर सकते हैं ।
कोड उदाहरण:
public MainFrame() {
setContentPane(contentPanel); //some JPanel is here
setPreferredSize(new Dimension(1200, 800));
setMinimumSize(new Dimension(1200, 800));
setSize(new Dimension(1200, 800));
setExtendedState(JFrame.MAXIMIZED_BOTH);
pack();
}
यह आवश्यक नहीं है यदि आप विंडोज पर जावा 7+ या जावा 6 का उपयोग कर रहे हैं।
JFrame.MAXIMIZED_BOTH
इसके बजाय उपयोग करें ।