আমি সুইং ব্যবহার করে একটি দ্রুত এবং নোংরা অ্যানিমেশন একসাথে রাখছি। আমি চাই উইন্ডোটি সর্বাধিক করা হোক। আমি এটা কিভাবে করবো?
উত্তর:
আপনি যদি জেফ্রেমে প্রসারিত করেন তবে:
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);
}
}
|
জন্য? এটি কি একটি করে, এবং যদি এটি ব্যর্থ হয় তবে এটি অন্যটি করে? বা আপনি প্রোগ্রামার পছন্দটি ইঙ্গিত করছেন (মানে এই কলটিতে যাওয়ার জন্য A | B এর মধ্যে একটি চয়ন করুন?) আমি এই সিনট্যাক্সটি আগে দেখিনি।
আমি এই সংস্করণটি পছন্দ করি:
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);
}
}
জেফ্রেমকে পূর্ণ-স্ক্রিনে সেট করার উপায়টি হল এমন 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
পরিবর্তে ব্যবহার করুন।