У меня есть JApplet, который должен отображать 3 компонента. (2 панели JPanel и 1 метод рисования)

У меня есть задание, в котором я должен разрешить пользователю построить график с использованием квадратного уравнения.

Мне удалось нарисовать скелет графика, и теперь я пытаюсь отобразить панель управления, чтобы пользователь мог вводить значения.

У меня есть 4 файла:

  • graph.java
  • panel.java
  • panelB.java
  • panelC.java

Моя проблема в том, что когда я запускаю код, он отображает только panel.java даже в контейнере, где он должен отображать две другие панели.

панель.java

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.JPanel;


public class panel extends JPanel {

    public panel(){
        this.setBackground(Color.yellow);
    }
}

Может ли кто-нибудь посоветовать, какие изменения я должен сделать, чтобы решить эту проблему?

Я внес некоторые изменения в файл graph.java:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.*;

public class GraphApplet extends JApplet{


    public GraphApplet(){
    
    raph p = new Graph();//graph
    
    p.setPreferredSize(new Dimension(760,500));
        conn.add(p,BorderLayout.CENTER);
    }

И теперь все, что отображается, это график.

Что касается другого кода, я также внес некоторые изменения в имена классов:

gnjk;.java

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.JPanel;


public class Graph extends JPanel {

public Graph(){
    this.setBackground(Color.yellow);
    }
   
    public void paintComponent(Graphics p) {
    
        super.paintComponent(p);
    
        Graphics2D graph = (Graphics2D)p;
        
        this.setBackground(Color.yellow);//set background color.
        
        int x,y,y1,x1,a,b,p1x,p1y,p2x,p2y;
        
        int xstart = 7;
        int ystart = 1;
        
        int xfinish = 3;

.......

bhfvhn.java

import javax.swing.*;

import java.awt.*;

import javax.swing.JPanel;


public class ControlsA extends JPanel{

public void init (Box g) {
    
    a = Box.createVerticalBox();
    a.add(new JLabel("Please enter the values below:"));
    a.add(new JLabel("h"));
    

}

}

jknmk.java

import javax.swing.*;

import java.awt.Component;
import java.awt.Dimension;

public class ControlsB extends JPanel{

public void init (Box b) {

    b = Box.createHorizontalBox();
    b.add(new JLabel("a"));
    JTextField f1 = new JTextField("0.0");
    f1.setMaximumSize(new Dimension(100,30));
    b.add(f1);


}
}

Вот обновление моего проекта:

jkl.java

import java.awt.BorderLayout;
import java.awt.Container;

public class GraphApplet extends JApplet{
  public GraphApplet() {
    public void init(){
        SwingUtilities.invokeLater(new Runnable() {
         
         public void run(){
             Container conn = getContentPane();
             conn.setLayout(new BorderLayout());

             Graph z = new Graph();
             conn.add(p,BorderLayout.CENTER);


             fasfae a = new ControlsA(box1);
             conn.add(a,BorderLayout.LINE_START);

            
             adsfawef b = new ControlsB(box2);
             conn.add(b,BorderLayout.PAGE_END);
         }
        });
        }
        }

    
    
    
    /*Container conn = getContentPane();
    conn.setLayout(new BorderLayout());     
    
    Graph p = new Graph();//graph
    
    p.setPreferredSize(new Dimension(460,560));
    conn.add(p,BorderLayout.CENTER);
    
    Box a = new Box(BoxLayout.Y_AXIS);

    a.setPreferredSize(new Dimension(50,50));
    conn.add(a,BorderLayout.EAST);
    
    Box b = new Box(BoxLayout.X_AXIS);
   
    b.setPreferredSize(new Dimension(201,50));
    conn.add(b,BorderLayout.SOUTH);*/
    //this code is commented not to loose it

vtk.java

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.JPanel;


class Graph extends JPanel {

public Graph(){
    this.setBackground(Color.yellow);
}
@Override
public Dimension getPreferredSize(){return (new Dimension(460,560)); }

public void paint(Graphics z) {
    
        
    
        Graphics graph = (Graphics2D)z;
        
       
        this.setBackground(Color.yellow).
        
        int x,y,y1,x1,a,b,p1x,p1y,p2x,p2y;
        
        //line co-ordinates
        //the numbers represent the number of boxes on the graph
        int xstart = 7;
        int ystart = 1;
        
        int x = 3;
        int y = 9;
        
        //other variables
        int i = 0;
        int i2 = 0;
        int m = 0;
        int n = 0;
        int m2 = 0;
        int n2 = 0;
        int f2 = 0;
        int g2 = 1;
        
        //ranges
        int f = 5;
        int g = -5;
        
        //change -ve num to +ve
        int g3 = Math.abs(g);
        
        int a1 = g3 + f;
        int b1 = a1;
        
        a = (Height);
        f = (Width);

        }
    }
}

// 6 variables the user has to input

}
@Override
public Dimension getPreferredSize() {return (new Dimension(200,100));}
}

nllkl.java

 @Override
 public Dimension getPreferredSize(){return (new Dimension(201,50));}
}

Все еще нет улучшения. Я не могу понять, что происходит.


person MBC870    schedule 16.06.2012    source источник
comment
Этот апплет добавляет 3 экземпляра panel вместо каждого из panel, panelB и panelC.   -  person Andrew Thompson    schedule 16.06.2012
comment
Кстати - У меня есть задание Вам сказали сделать это как апплет? Если нет, сделайте JFrame вместо этого. Если да, спросите репетитора «почему апплет?». Их сложнее разрабатывать, отлаживать и развертывать, и это не то, что должны пробовать студенты, или в любой ситуации, когда вы не хотите втискивать совершенно хороший многофункциональный клиент на веб-страницу (что в лучшем случае является странной смесью). раз).   -  person Andrew Thompson    schedule 16.06.2012
comment
да, это должен быть конкретно апплет: S   -  person MBC870    schedule 16.06.2012
comment
это должен быть конкретный апплет Это глубоко беспокоит меня. Пожалуйста, задайте вопрос выше тому, кто это решил, и упомяните, что ведущий поставщик ответов для апплетов на SO спрашивает ( это тема, в которой у меня большой опыт). Вернитесь ко мне с их ответом.   -  person Andrew Thompson    schedule 16.06.2012
comment
Основываясь на вашем «ответе», я спрошу, где вы добавляете компоненты в Box?   -  person Andrew Thompson    schedule 16.06.2012
comment
Верно (хороший скриншот, кстати) эти коробки имеют предпочтительный размер, но в них ничего нет! Они просто образуют «пространство» справа и внизу апплета. Поместите что-нибудь внутрь экземпляров Box, как это было сделано в конструкторе панелей компонентов. Кстати, второй комментарий ..BoxLayout.X_AXIS);//vertical должен читаться как //horizontal - комментарии не годятся, если они неверны!   -  person Andrew Thompson    schedule 16.06.2012
comment
ОК - я только что видел «последние» правки. Пришло время решить, должны ли вообще существовать классы ControlsA &ControlsB (хотя компоненты внутри них необходимы). Я считаю, что это плохой дизайн - использование наследования там, где оно должно быть композицией. Способ исправления апплета меняется в зависимости от этого решения. Являются ли они частью спецификации? домашнего задания?   -  person Andrew Thompson    schedule 16.06.2012


Ответы (2)


Пожалуйста, попробуйте запустить этот код сейчас, скажите, это ближе к тому, что вы хотели? если да, дайте мне знать, чтобы я мог удалить свой ответ. Смотрите изменения, которые я сделал:

  • в вашем классе PanelC, где вместо использования метода init() я создал конструктор.
  • Внутри вашего класса Graph‹ я удалил все вызовы setPreferredSizes(...) и вместо этого переопределил getPreferredSize() для каждого класса, расширяющего JPanel. Для этого посетите каждую панель класса, панель B и панель C.
  • Наконец, я изменил значения измерения, предоставленные для JPanel, которые должны идти на сторону LEFT/LINE_START, на что-то, что можно увидеть.
  • ЛУЧШЕЕ ИЗМЕНЕНИЕ - это использование EDT - потока отправки событий, похоже, вы действительно не знаете о Параллелизм в Swing

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

public class Graph extends JApplet{

    public void init(){

        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                Container conn = getContentPane();
                conn.setLayout(new BorderLayout());

                Panel p = new Panel();//graph
                conn.add(p,BorderLayout.CENTER);

                Box box1 = new Box(BoxLayout.Y_AXIS);
                PanelB a = new PanelB(box1);//vertical
                conn.add(a,BorderLayout.LINE_START);

                Box box2 = new Box(BoxLayout.X_AXIS);
                PanelC b = new PanelC(box2);//horizontal
                conn.add(b,BorderLayout.PAGE_END);
            }
        });
    }
}

class Panel extends JPanel {

    public Panel(){
        this.setBackground(Color.yellow);
    }

    @Override
    public Dimension getPreferredSize()
    {   
        return (new Dimension(460,560));
    }

    public void paintComponent(Graphics p) {

        super.paintComponent(p);

        Graphics2D graph = (Graphics2D)p;

        Dimension appletSize = this.getSize();
        int appletHeight = (int)(appletSize.height);
        int appletWidth = appletSize.width;

        this.setBackground(Color.yellow);//set background color.

        int x,y,y1,x1,a,b,p1x,p1y,p2x,p2y;

        //line co-ordinates
        //the numbers represent the number of boxes on the graph
        int xstart = 7;
        int ystart = 1;

        int xfinish = 3;
        int yfinish = 9;

        //other variables
        int i = 0;
        int i2 = 0;
        int m = 0;
        int n = 0;
        int m2 = 0;
        int n2 = 0;
        int f2 = 0;
        int g2 = 1;

        //ranges
        int f = 5;
        int g = -5;

        //change -ve num to +ve
        int g3 = Math.abs(g);

        int a1 = g3 + f;
        int b1 = a1;

        y1 = (appletHeight);
        x1 = (appletWidth);
        y = (appletHeight / 2);
        x = (appletWidth / 2);
        a = (appletWidth / a1);
        b = (appletHeight / b1);

        int d = (appletWidth / a1);
        int e = (appletHeight / b1);

        /**
         to determine the
         ammount of pixles there
         is in each box of the
         graph, both y-axis and 
         x-axis
         */
        int xbox = x1 / 10;
        int ybox = y1 / 10;

        //line variables
        //the xstart, ystart, etc represent the number of boxes

        //top point of the line on the graph
        p1x = xbox * xstart;//start x
        p1y = ybox * ystart;//start y

        //lowwer point of the line on the graph
        p2x = xbox * xfinish;//finish x
        p2y = ybox * yfinish;//finish y

        //draw y-axis numbers 
        //(+ve)
        while(f != 0){
            String s = String.valueOf(f);
            p.drawString(s,(x + 5),m + 13);
            m = m + b;
            f = f - 1;
        }
        //(-ve)
        m2 = y;
        while(f2 != g-1){
            String u = String.valueOf(f2);
            p.drawString(u,(x + 5),m2 - 3);
            m2 = m2 + b;
            f2 = f2 - 1;
        }
        //draw x-axis numbers.
        //(-ve)
        while(g != 0){
            String t = String.valueOf(g);
            p.drawString(t,n,y - 5);
            n = n + a;
            g = g + 1;
        }
        //(+ve)
        n2 = x + a;
        while(g2 != g3+1){
            String vw = String.valueOf(g2);
            p.drawString(vw,n2 -10,y - 5);
            n2 = n2 + a;
            g2 = g2 + 1;
        }

        BasicStroke aLine2 = new BasicStroke(1.0F,
           BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
        graph.setStroke(aLine2);

        //notch on numbers and grid lines
        //left to right, top to bottom notches
        int v2 = -5;
        int v5 = 0;
        while(i <= a1-1){
            p.setColor(Color.lightGray);//lightgray line
            p.drawLine(a,0,a,y1);//vertical lightgray
            p.drawLine(0,b,x1,b);//horizontal lightgray
            a = a + d;
            b = b + e;
            i = i + 1;
        }
        //notches
        while(i2 <= a1){
            p.setColor(Color.blue);//notch color
            p.drawString("x",v2+2,y+3);//xaxis
            p.drawString("x",x-4,v5+4);//yaxis
            v5 = v5 + e;
            v2 = v2 + d;
            i2 = i2 + 1;
        }

        //draws the border of the graph
        p.setColor(Color.black);
        Rectangle2D.Float rect = new Rectangle2D.Float(0,0,x1,y1);
        BasicStroke aLine = new BasicStroke(2.5F, 
               BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
        graph.setStroke(aLine);
        graph.draw(rect);

        //draw cross
        BasicStroke aLine3 = new BasicStroke(2.5F,
                     BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
        graph.setStroke(aLine3);
        p.drawLine(x,0,x,y1); //vertical line
        p.drawLine(0,y,x1,y); //horizontal line

        //display the value of graph width and graph height
        String aw = String.valueOf(x1);
        p.drawString("Graph Width = ", 50,90);
        p.drawString(aw,150,90);
        p.drawString("Graph Height = ", 50,110);
        String ah = String.valueOf(y1);
        p.drawString(ah,156,110);

        //draw line on graph

        BasicStroke aLine4 = new BasicStroke(1.5F,
                         BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
        graph.setStroke(aLine4);
        p.setColor(Color.red);

        if(p1x <= x1 && p2x <= x1 && p1y <= y1 && p2y <= y1){
            p.drawLine(p1x,p1y,p2x,p2y);
            Color c = new Color(0,0,0);
            p.setColor(c);
            p.drawString("X", p1x-4,p1y+4);
            p.drawString("X", p2x-4,p2y+4);
        }
        else{
            p.setColor(Color.black);
            p.drawRect(48,34,223,35);
            p.setColor(Color.white);
            p.fillRect(49,35,222,34);
            p.setColor(Color.red);
            p.drawString("Wrong co-ordinates!!!", 50,50);
            p.drawString("Values exceede applet dimensions.", 50,65);
        }
    }
}

class PanelB extends JPanel{

    public PanelB (Box a) {

        a = Box.createVerticalBox();
        a.add(new JLabel("Please enter the values below:"));
        a.add(new JLabel("a"));
        JTextField g1 = new JTextField("0.0");
        g1.setMaximumSize(new Dimension(100,30));
        a.add(g1);
        a.add(new JLabel("b"));
        JTextField g2 = new JTextField("0.0");
        g2.setMaximumSize(new Dimension(100,30));
        a.add(g2);
        a.add(new JLabel("c"));
        JTextField g3 = new JTextField("0.0");
        g3.setMaximumSize(new Dimension(100,30));
        a.add(g3);
        a.add(new JLabel("d"));
        JTextField g4 = new JTextField("0.0");
        g4.setMaximumSize(new Dimension(100,30));
        a.add(g4);
        a.add(new JButton("Plot"));
        a.add(new JButton("Refine"));
        add(a);
    }

    @Override
    public Dimension getPreferredSize()
    {   
        return (new Dimension(200,100));
    }
}

class PanelC extends JPanel{

    public PanelC (Box b) {

        b = Box.createHorizontalBox();
        b.add(new JLabel("a"));
        JTextField f1 = new JTextField("0.0");
        f1.setMaximumSize(new Dimension(100,30));
        b.add(f1);
        b.add(new JLabel("b"));
        JTextField f2 = new JTextField("0.0");
        f2.setMaximumSize(new Dimension(100,30));
        b.add(f2);
        b.add(new JLabel("c"));
        JTextField f3 = new JTextField("0.0");
        f3.setMaximumSize(new Dimension(100,30));
        b.add(f3);
        b.add(new JLabel("d"));
        JTextField f4 = new JTextField("0.0");
        f4.setMaximumSize(new Dimension(100,30));
        b.add(f4);
        b.add(new JButton("Plot"));
        b.add(new JButton("Refine"));
        add(b);
    }

    @Override
    public Dimension getPreferredSize()
    {   
        return (new Dimension(201,50));
    }
}

Вот HTML-файл, который я использовал:

<html>
    <p> This file launches the 'Graph' applet: Graph.class! </p>  
    <applet code= "Graph.class" height = 550 width = 1000>
        No Java?!
    </applet>
 </html>

Вот результат, который я получаю:

ГРАФИК

person nIcE cOw    schedule 16.06.2012
comment
В вашем классе PanelC вместо использования метода init().. Ах да, забыл. Было очень странно, когда PanelB использовал конструктор. - person Andrew Thompson; 16.06.2012
comment
Точно, хотя я действительно не сторонник использования конструкторов при расширении чего-либо, но просто для того, чтобы облегчить жизнь, я сделал это, оставьте свой ответ всегда там, чтобы сделать этот трюк с подробным объяснением вещей :-) И более того, в ОП кода он/она даже не вызывал метод init(), вот что побудило меня сделать это изменение :-) И на этот раз OP не удалось вызвать PanelB and PanelC где-нибудь в коде :( - person nIcE cOw; 16.06.2012
comment
Здравствуйте и спасибо за ваш ответ, я внес изменения в соответствии с вашим ответом, и я получил то же самое, что и мое последнее обновление в вопросе, но график переместился в правую часть апплета. пожалуйста, посмотрите мой вопрос еще раз через пару минут, так как я собираюсь обновить его снова. - person MBC870; 16.06.2012
comment
Теперь в последнем редактировании OP не удалось определить какой-либо метод init() для класса, который расширяет JApplet. Я только что пропустил свое ЛУЧШЕЕ изменение, LOL, использование EDT, только что упомянул об этом прямо сейчас, кажется, я только что понял, что я сделал, с тех пор, как я узнал об EDT из stackoverflow, это похоже на то, что моя голова катится к этой штуке, не задумываясь , так что думал, что OP будет делать то же самое, но я снова посмотрел, и он отсутствовал, затем я понял, что это мое изменение :-), в коде, хе-хе - person nIcE cOw; 16.06.2012
comment
Да, их последняя попытка, похоже, частично последовала моему совету поработать с пользовательскими классами. Но они не зашли достаточно далеко и все еще смешивали аспекты обоих подходов. Я все еще жду окончательного ответа на вопрос, стоит ли продолжать работу с панелями B и C. но график переместился в правую часть апплета. И вы не можете понять, чем это вызвано, и как это изменить?!? Посмотрите внимательно на код и проверьте в JavaDocs методы и атрибуты, используемые в макетах. - person Andrew Thompson; 16.06.2012
comment
@Matthew: вы пытались запустить точную копию кода, предоставленного мной? Поскольку, если он соответствует вашим ожиданиям, вам, вероятно, нужно снова просмотреть свой код, чтобы увидеть, где вы делаете неправильно. Если бы вы также проверили свой файл .html относительно предоставленного вами height and width. - person nIcE cOw; 16.06.2012
comment
@ Эндрю Томпсон Что я должен тебе ответить? Мне удалось поместить каждую мысль туда, где она принадлежит, увидеть мой вопрос через минуту, чтобы увидеть, что я искал. Еще раз спасибо, ребята, за вашу замечательную помощь, и я надеюсь, что когда-нибудь я стану таким же хорошим, как вы... :) - person MBC870; 16.06.2012
comment
Затем просто измените эту строку conn.add(a,BorderLayout.LINE_START); на эту conn.add(a,BorderLayout.LINE_END);, этого достаточно. - person nIcE cOw; 16.06.2012
comment
@nIcEcOw извините, но я не понял вашего последнего комментария: не могли бы вы повторить? - person MBC870; 16.06.2012
comment
Если вы хотите получить результат, как показано на изображении в вашем вопросе, просто замените conn.add(a,BorderLayout.LINE_START); в моем коде этой строкой conn.add(a,BorderLayout.LINE_END);, вот и все :-) - person nIcE cOw; 16.06.2012

Основные проблемы в этом коде:

  1. Апплет добавляет 3 экземпляра panel вместо одного экземпляра panel, panelB и panelC.
  2. Ни panelB, ни panelC никогда не добавляют Box на панель, поэтому он не появится.
  3. Вы намекаете в коде, что panelB должно быть выровнено по вертикали, что означает, что он будет лучше соответствовать LINE_START (WEST) BorderLayout, а не NORTH.
  4. public void paint(Graphics p) {.. не соответствует panel. Поскольку panel — это Swing JPanel, должно быть public void paintComponent(Graphics p) {..

Как только эти вещи будут учтены, вот как это может выглядеть.

график

Другие проблемы.

  • Единственный код, который должен расширять класс, предназначен для самого апплета и panel. На самом деле, даже panel можно изменить, чтобы показать BufferedImage (график) внутри JLabel.
  • panelB и panelC полностью избыточны, просто добавьте Box непосредственно в область макета нужного родительского компонента.
  • The nomenclature is wrong.
    1. Java class names should be EachWordUpperCase
    2. Используйте осмысленные имена классов — апплет может быть GraphApplet, графическая область Graph, .. Я не уверен, как назвать последние 2 панели, так как они содержат идентичные компоненты. Если бы был только один, я мог бы назвать его Controls как класс (что слишком много для этого) или controls, если бы это был экземпляр простого JPanel или Box.
  • В этой ситуации не рекомендуется ни один из вызовов для установки максимального или предпочтительного размера. Единственный случай, который можно сделать для этого, — предпочтительный размер самого графика, но, поскольку он появляется в CENTER апплета, размер будет предлагаться по ширине/высоте апплета, указанным в HTML, за вычетом естественного размера апплета. другие компоненты (компонент CENTER получит «остальное пространство»).

Обновлять

..как я собираюсь изменить код в своем апплете, чтобы апплет добавлял одну из каждой панели (?)

Изменить:

panel a = new panel();//vertical

Кому:

panelB a = new panelB(new Box(BoxLayout.Y_AXIS));//vertical

Является самым простым способом. Обратите внимание, что это изменится, если вы решите добавить Box напрямую.

Box a = new Box(BoxLayout.Y_AXIS);//vertical
person Andrew Thompson    schedule 16.06.2012
comment
Большое спасибо за ваш быстрый ответ. Я новичок в JAVA, я исправил имена классов, однако мне может понадобиться некоторая помощь в кодировании, чтобы изменить основную проблему 1, то есть как я собираюсь изменить код в своем апплете, чтобы апплет добавлял по одному из каждой панели ... - person MBC870; 16.06.2012
comment
Смотрите обновление. Обратите внимание, что, поскольку это фактически домашняя работа, имеет смысл направить вас к решению, а не напрямую предоставлять код. - person Andrew Thompson; 16.06.2012
comment
Большое спасибо за предоставленную мне возможность учиться, я сразу же исправлю свой код и вернусь с ответом :) - person MBC870; 16.06.2012
comment
Я исправил изменения, однако это результат, который я получил. Апплет показывает мне только график, а там, где должны быть две другие панели JPanel, он просто пуст. это все еще улучшение, но ;) - person MBC870; 16.06.2012
comment
@AndrewThompson: Снова один замечательный ответ, любая ПИЛЕТА, чтобы остановить вас на день и заработать очки :-) - person nIcE cOw; 16.06.2012
comment
@Matthew Я забыл добавить, что пользовательские панели, которые принимали Box, никогда не добавляли его к рассматриваемой панели. Компоненты не видны, пока они не будут добавлены в контейнер, который сам станет видимым. - person Andrew Thompson; 16.06.2012
comment
Далее, мой последний комментарий к вашему последнему наблюдению упоминается в пункте 2) выше. Если есть что-то, что я пишу, что вы не понимаете, пожалуйста, спросите меня об этом. - person Andrew Thompson; 16.06.2012
comment
Я удалил это. Не знал, я новичок в подобных форумах. Вернемся к моему коду, что нужно сделать, чтобы добавить компоненты в контейнер? Спасибо :) - person MBC870; 16.06.2012
comment
Кстати - не беспокойтесь о том, чтобы сделать ошибку или две. Обычно рядом есть кто-то, кто готов помочь исправить это. :) - person Andrew Thompson; 16.06.2012
comment
что нужно сделать, чтобы я добавил компоненты в контейнер? Сделайте то же самое, что и при добавлении их в Box в конструкторе пользовательских классов! Просто переместите этот код "конструктора" в основной класс. - person Andrew Thompson; 16.06.2012
comment
@Matthew: Не могли бы вы обновить свой вопрос, указав последние данные, которые вы добавили в свои усилия, и одно небольшое изображение, показывающее, где именно вы хотите, чтобы ваши компоненты лежали, будет очень полезно :-) - person nIcE cOw; 16.06.2012
comment
вопрос обновлен. Я хотел бы разместить 1 панель на восточной стороне границы, которая должна быть: ControlsA, а другую - на южной стороне, которая должна быть ControlsB. График остается на месте. - person MBC870; 16.06.2012
comment
@nIcEcOw Смотри новую классную редакцию! Как получить эти очки. Обмен телами? Я бы согласился, если бы у тебя была сексуальная девушка. ;) - person Andrew Thompson; 16.06.2012
comment
в дополнение к моему последнему комментарию выше, кажется, что апплет получает позиции, в которые я хочу поместить панели, однако на самом деле он их не отображает... Вопрос обновлен, чтобы показать, какие изменения я сделал для всех три кода, предложенные @Andrew Thompson :) - person MBC870; 16.06.2012
comment
Ребята помогите мне с этим. stackoverflow.com/q/11071722/1460412 Спасибо :) - person MBC870; 17.06.2012