0

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

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

小程序框架

    appletFrame = new JFrame(Settings.serverName);
            Loader.webclient = false;
            appletFrame.setLayout(new BorderLayout());
            appletFrame.setDefaultCloseOperation(3);
            appletPanel.setLayout(new BorderLayout());
            appletFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/resources/icon.png")));
            appletPanel.add(this);
            appletPanel.setPreferredSize(new Dimension(767, 537));
            appletFrame.getContentPane().add(appletPanel, "Center");
            appletFrame.pack();
            appletFrame.setLocationRelativeTo(null);
            appletFrame.setVisible(true);
    JMenuBar jmenubar = new JMenuBar();
            appletFrame.setJMenuBar(jmenubar);
            Layout = new FlowLayout();
            ImageIcon keyboard = new ImageIcon(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/resources/keyboard.png")));
            ImageIcon wrench = new ImageIcon(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/resources/wrench.png")));
            Button1 = new JButton("Vote");
            Button2 = new JButton("Item List");
            Button3 = new JButton("Screenshot");
            Button4 = new JButton(wrench);
            Button5 = new JButton(keyboard);
            Button4.setBorder(null);
            Button4.setBorderPainted(false);
            Button4.setContentAreaFilled(false);
            Button5.setBorder(null);
            Button5.setBorderPainted(false);
            Button5.setContentAreaFilled(false);
            jmenubar.setLayout(Layout);
            jmenubar.add(Button1);
            jmenubar.add(Button2);
            jmenubar.add(Button3);
            jmenubar.add(Button4);
            jmenubar.add(Button5);
            Button1.addActionListener(this);
            Button2.addActionListener(this);
            Button3.addActionListener(this);
            Button4.addActionListener(this);
            Button5.addActionListener(this);
            Button1.setText("Vote");
            Button2.setText("Item List");
            Button3.setText("Screenshot");

我希望它与 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);
4

1 回答 1

3

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

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

测试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();
            }
        });
    }
}
  1. 是的,如果我有一个 SSCCE 开始,这会更早到来。;)
于 2012-05-18T23:08:13.423 回答