मैं विंडो का आकार बदलना अक्षम करना चाहता हूं। कोई विचार?एसडब्ल्यूटी जावा: विंडो को आकार बदलने से कैसे रोकें?
उत्तर
आप दो आर्ग निर्माता का उपयोग करके Shell
शैली बिट्स निर्दिष्ट कर सकते हैं । डिफ़ॉल्ट शैली बिट्स SWT.SHELL_TRIM
हैं:
public static final int SHELL_TRIM = CLOSE | TITLE | MIN | MAX | RESIZE;
आप वास्तव में RESIZE
सा बाहर करना चाहते हैं। आप अपने खुद के Shell
बना रहे हैं:
final Shell shell = new Shell(parentShell, SWT.SHELL_TRIM & (~SWT.RESIZE));
आप Dialog
का विस्तार कर रहे हैं, तो आप getShellStyle
overridding से खोल शैली बिट्स को प्रभावित कर सकते हैं:
@Override
protected int getShellStyle()
{
return super.getShellStyle() & (~SWT.RESIZE);
}
जब आप खोल घोषित करते हैं तो आप फर्नीचर को नियंत्रित कर सकते हैं। मुझे लगता है कि यह उदाहरण वह है जो आप चाहते हैं;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class FixedWindow {
public static void main(String[] args) {
Display display = new Display();
//final Shell shell = new Shell(display); //defaults
//final Shell shell = new Shell(display, SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX); //can be maximised
final Shell shell = new Shell(display, SWT.CLOSE | SWT.TITLE | SWT.MIN); // fixed but can be minimised
//final Shell shell = new Shell(display, SWT.TITLE); // fixed, uncloseable, unminimisable can only be removed by OS killing JVM.
Rectangle boundRect = new Rectangle(0, 0, 1024, 768);
shell.setBounds(boundRect);
Rectangle boundInternal = shell.getClientArea();
shell.setText("Fixed size SWT Window.");
shell.open();
final Text text = new Text(shell, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
text.setEditable(true);
text.setEnabled(true);
text.setText("Oh help!");
text.setBounds(boundInternal);
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
धन्यवाद, वास्तव में मैंने इसे जोड़कर हल किया: "नया शैल (प्रदर्शन, SWT.CLOSE | SWT.TITLE)" , और आपका उत्तर वही करता है लेकिन इसके अतिरिक्त MIN – alhcr
मैं इसके बारे में यकीन नहीं है, लेकिन मैं आपको सिर्फ इस तरह SWT.Resize घटना ड्रॉप कर सकते हैं लगता है:
shell.addListener (SWT.Resize, new Listener() {
public void handleEvent (Event e)
{
return;
}
});
है यह अभ्यास में काफी काम नहीं करता है - आकार बदलें खिड़की का आकार बदलने के बाद श्रोता को निकाल दिया गया है, पहले नहीं, इसलिए 'e.doit' को गलत पर सेट करने से कोई प्रभाव नहीं पड़ता है। कुछ प्लेटफार्मों पर, आप शैल ** बैक ** के आकार को सेट करने का प्रयास कर सकते हैं, लेकिन यह कुछ प्लेटफ़ॉर्म पर अजीब लग रहा है (विशेष रूप से वायरफ़्रेम आकार बदलने के साथ, या प्लेटफ़ॉर्म जो उस घटना को फायर करने से पहले उचित आकार बदलने की अनुमति देते हैं।) अन्य प्लेटफार्मों पर, जब आप आकार बदलने वाले श्रोता के अंदर एक खोल का आकार बदलते हैं तो आपको वास्तव में घटनाओं का अनंत लूप मिलता है (जब तक कि आप एक ध्वज सेट न करें जिसे आप आकार बदल रहे हों।) –
[JFace के साथ गैर आकार बदलने योग्य खिड़की] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/5191515/non-resizable-window-with-jface) –