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 は 1 つの最上位コンテナーに統合する方が適切です。

これは基本的なアイデアを示すSSCCE 1 (私の 2 番目のコメントで言及) ですが、必要な効果についてより良いアイデアが得られましたが、JSplitPaneあまり適切ではないようです。ここでは、GUI 要素を同じレイアウトに結合するだけです。

TestGUI

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 に答える