Java 如何将新JFrame附加到已制作的框架?

Java 如何将新JFrame附加到已制作的框架?,java,swing,jframe,layout-manager,Java,Swing,Jframe,Layout Manager,如何将框架连接到现有框架 下面的代码是appletframe的代码。我想做的是添加另一个代码,该代码用于将框架连接到AppletFrame的底部,这样当我拖动AppletFrame时,框架代码也会随之拖动。基本上,我希望框架代码与appletFrame一起附加,以便两个框架都在一起 应用程序框架 我希望它与AppletFrame一起连接的框架。我想把它贴在appletFrame的底部,但我不知道怎么做 JFrame frame = new JFrame(); frame.set

如何将框架连接到现有框架

下面的代码是appletframe的代码。我想做的是添加另一个代码,该代码用于将框架连接到AppletFrame的底部,这样当我拖动AppletFrame时,框架代码也会随之拖动。基本上,我希望框架代码与appletFrame一起附加,以便两个框架都在一起

应用程序框架 我希望它与AppletFrame一起连接的框架。我想把它贴在appletFrame的底部,但我不知道怎么做

JFrame frame = new JFrame(); 
        frame.setSize(775,121); 
        frame.setResizable(false); 
        JTextArea textArea = new JTextArea("TEST"); 
        textArea.setSize(400,400);          
        textArea.setLineWrap(true);     
        textArea.setEditable(false);    
        textArea.setVisible(true);     
        JScrollPane scroll = new JScrollPane (textArea);    
        scroll.setVerticalScrollBarPolicy   (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);          
        scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);     
        frame.add(scroll);    
        frame.setVisible(true);     
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

正如我在第一篇评论中提到的,这个GUI最好合并到一个顶级容器中

下面是一个SSCCE1(在我的第二条评论中提到),它展示了基本思想,尽管现在我对所需的效果有了更好的了解,
JSplitPane
似乎不太合适。在这里,我只是将GUI元素组合到同一个布局中

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class TestGUI extends JPanel {

    TestGUI() {
        JFrame appletFrame = new JFrame("Settings.serverName");
        appletFrame.setLayout(new BorderLayout());
        appletFrame.setDefaultCloseOperation(3);

        JPanel appletPanel = new JPanel(new BorderLayout());

        appletPanel.add(this);
        appletPanel.setPreferredSize(new Dimension(767, 537));
        appletFrame.getContentPane().add(appletPanel, BorderLayout.CENTER);

        // Don't use a menu-bar as a tool-bar!
        JToolBar jmenubar = new JToolBar();
        appletPanel.add(jmenubar, BorderLayout.PAGE_START);
        JButton Button1 = new JButton("Vote");
        JButton Button2 = new JButton("Item List");
        JButton Button3 = new JButton("Screenshot");
        JButton Button4 = new JButton("wrench");
        JButton Button5 = new JButton("keyboard");
        Button4.setBorder(null);
        Button4.setBorderPainted(false);
        Button4.setContentAreaFilled(false);
        Button5.setBorder(null);
        Button5.setBorderPainted(false);
        Button5.setContentAreaFilled(false);
        jmenubar.setLayout(new FlowLayout());
        jmenubar.add(Button1);
        jmenubar.add(Button2);
        jmenubar.add(Button3);
        jmenubar.add(Button4);
        jmenubar.add(Button5);

        JTextArea textArea = new JTextArea("TEST", 4, 65 );
        textArea.setLineWrap(true);
        textArea.setEditable(false);
        textArea.setVisible(true);
        JScrollPane scroll = new JScrollPane (
            textArea,
            JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
            JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        appletPanel.add(scroll, BorderLayout.PAGE_END);

        appletFrame.pack();
        appletFrame.setLocationByPlatform(true);
        appletFrame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                new TestGUI();
            }
        });
    }
}

  • 是的,如果我一开始就有一个SSCCE的话,这会来得更快
    正如我在第一篇评论中提到的,这个GUI最好合并到一个顶级容器中

    下面是一个SSCCE1(在我的第二条评论中提到),它展示了基本思想,尽管现在我对所需的效果有了更好的了解,
    JSplitPane
    似乎不太合适。在这里,我只是将GUI元素组合到同一个布局中

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    class TestGUI extends JPanel {
    
        TestGUI() {
            JFrame appletFrame = new JFrame("Settings.serverName");
            appletFrame.setLayout(new BorderLayout());
            appletFrame.setDefaultCloseOperation(3);
    
            JPanel appletPanel = new JPanel(new BorderLayout());
    
            appletPanel.add(this);
            appletPanel.setPreferredSize(new Dimension(767, 537));
            appletFrame.getContentPane().add(appletPanel, BorderLayout.CENTER);
    
            // Don't use a menu-bar as a tool-bar!
            JToolBar jmenubar = new JToolBar();
            appletPanel.add(jmenubar, BorderLayout.PAGE_START);
            JButton Button1 = new JButton("Vote");
            JButton Button2 = new JButton("Item List");
            JButton Button3 = new JButton("Screenshot");
            JButton Button4 = new JButton("wrench");
            JButton Button5 = new JButton("keyboard");
            Button4.setBorder(null);
            Button4.setBorderPainted(false);
            Button4.setContentAreaFilled(false);
            Button5.setBorder(null);
            Button5.setBorderPainted(false);
            Button5.setContentAreaFilled(false);
            jmenubar.setLayout(new FlowLayout());
            jmenubar.add(Button1);
            jmenubar.add(Button2);
            jmenubar.add(Button3);
            jmenubar.add(Button4);
            jmenubar.add(Button5);
    
            JTextArea textArea = new JTextArea("TEST", 4, 65 );
            textArea.setLineWrap(true);
            textArea.setEditable(false);
            textArea.setVisible(true);
            JScrollPane scroll = new JScrollPane (
                textArea,
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            appletPanel.add(scroll, BorderLayout.PAGE_END);
    
            appletFrame.pack();
            appletFrame.setLocationByPlatform(true);
            appletFrame.setVisible(true);
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater( new Runnable() {
                public void run() {
                    new TestGUI();
                }
            });
        }
    }
    

  • 是的,如果我一开始就有一个SSCCE的话,这会来得更快
    请改用。为了更快地获得更好的帮助,请发布一个.Attributes
    Loader
    Layout
    &
    Button1
    应命名为
    Loader
    Layout
    &
    Button1
    。。请学习类、方法和属性名称的通用(特别是用于名称的大小写)并一致使用。请改用a。为了更快地获得更好的帮助,请发布一个.Attributes
    Loader
    Layout
    &
    Button1
    应命名为
    Loader
    Layout
    &
    Button1
    。。请学习类、方法和属性名称的通用(特别是用于名称的大小写)并一致使用。