الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية جعل ال JInternalFrame تملئ الشاشة؟؟

بدأه mr.beshoy في 23 فبراير 2010 · 4 رد · 797 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هنا عندما تضغط على الزر Show تظهر JInternalFrame محتوية على panel بها JTable .

و لكن أريد ال JInternalFrame تملى الشاشة

فاستعملت هذه الخاصية :

try {
            internalFrame.setMaximum(true);
        } catch (PropertyVetoException ex) {
            ex.printStackTrace();
        }

لكن للأسف عند الضغط على الزر show يظهر هذا ال Exception

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at javax.swing.DefaultDesktopManager.maximizeFrame(DefaultDesktopManager.java:115)

الكود كامل :

-------------------

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;

public class TestJtable extends JFrame {

    private JPanel mainPanel, buttonPanel;
    private JButton[] buttons;
    private final String[] BUTTONNAMES = {"showButton", "insertButton", "searchButton", "updateButton", "deletebutton"};
    private JInternalFrame internalFrame;
    private JDesktopPane desktopPane;
    private JTable table;
      private JScrollPane scrollPane;
    private MyActionListener myActionListener;

    public TestJtable() throws ClassNotFoundException, SQLException {
        intializingPanels();
        intializingbuttons();
             table = new JTable(3, 4);
        scrollPane = new JScrollPane(table, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
          getContentPane().add(mainPanel);
    }

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        TestJtable testJtable = new TestJtable();
        testJtable.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        testJtable.setSize(new Dimension(600, 300));
        testJtable.setLocationRelativeTo(null);
        testJtable.setVisible(true);
        testJtable.setExtendedState(MAXIMIZED_BOTH);
    }

    private void intializingPanels() {
        mainPanel = new JPanel(new BorderLayout());
        buttonPanel = new JPanel(new FlowLayout());

    }

    private void intializingbuttons() {
        myActionListener = new MyActionListener();
        buttons = new JButton[BUTTONNAMES.length];
        for (int i = 0; i < BUTTONNAMES.length; i++) {
            buttons = new JButton(BUTTONNAMES);
            buttons.addActionListener(myActionListener);
            buttonPanel.add(buttons);
            mainPanel.add(buttonPanel, BorderLayout.NORTH);
        }
    }

    private void intializingInternalDeskTop() {
        JPanel panel = new JPanel(new BorderLayout());
        panel.add(scrollPane, BorderLayout.CENTER);
        /////////////////////////////////////////////////////////////
        internalFrame = new JInternalFrame("", true, true, true);
        internalFrame.setSize(500, 500);
        internalFrame.add(panel);
        internalFrame.setVisible(true);
        try {
            internalFrame.setMaximum(true);
        } catch (PropertyVetoException ex) {
            ex.printStackTrace();
        }
        //////////////////////////////////////////////////////////////
        desktopPane = new JDesktopPane();
        desktopPane.setOpaque(false);
        desktopPane.setEnabled(true);
        desktopPane.add(internalFrame);
        mainPanel.add(desktopPane, BorderLayout.CENTER);
    }

    private class MyActionListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == buttons[0]) {
                intializingInternalDeskTop();

            }
        }
    }
}

شكراً

#2

الكود فى المرفقات :

Test.rar

#3

المشكلة تم حلها .

------------------------

سبب ال exception :

كنت أعمل call للدالة setMaximum(true)

فى هذا السطر:

 internalFrame.setMaximum(true);

قبل إضافة ال internalFrame على ال deskTopPane

لذا يجب منادتها بعد إضافة ال internalFrame على ال deskTopPane

كالتالى :

------------

    private void intializingInternalDeskTop() {
        JPanel panel = new JPanel(new BorderLayout());
        panel.add(scrollPane, BorderLayout.CENTER);
        /////////////////////////////////////////////////////////////
        internalFrame = new JInternalFrame("", true, true, true);
        internalFrame.setSize(500, 500);
        internalFrame.add(panel);
        internalFrame.setVisible(true);
               //////////////////////////////////////////////////////////////
        desktopPane = new JDesktopPane();
        desktopPane.setOpaque(false);
        desktopPane.setEnabled(true);
        desktopPane.add(internalFrame);
        try {
            internalFrame.setMaximum(true);
        } catch (PropertyVetoException ex) {
            ex.printStackTrace();
        }

        mainPanel.add(desktopPane, BorderLayout.CENTER);
    }

شكراً

#4

الحمد لله أنها حلت :)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

من بعد فضلك علينا :)

شكراً جزيلاً

مواضيع مشابهة