Вопрос

Это делает меня очень злым, я работал над этим в течение 2 дней, у 2 книг открыты и просматривали их и посмотрели через них, и до сих пор не могу получить эту программу, чтобы запустить то, как я хочу, чтобы она проводила. Я добираюсь до того, как если это не поможет, я ухожу.

Я хочу простое рамное приложение. У него есть jcombobox, сосредоточенная на вершине. Рядом с ним является текстовое поле достаточно большим, чтобы показать числовые цифры, такие как «$ 49,99» ниже. Это место для текстовой области, показывающей Условия обслуживания ниже, что этот флажок согласен с Условиями обслуживания ниже, что это 2 кнопки «Принять» и «снижение»

Я работал над этим в течение 2 дней, вот кодирование:

public class Bar extends JFrame implements ActionListener
{
    public Bar(final JFrame frame)
    {
        String[] tests = { "A+ Certification", "Network+ Certification", "Security+ Certification", "CIT Full Test Package" };
        JButton button = new JButton("Click Meh");
        add(new JLabel("Welcome to the CIT Test Program "));
        add(new JLabel("Please select which Test Package from the list below."));
        frame.setVisible(true);
        frame.setSize(250,250);
        JPanel pane1 = new JPanel(new FlowLayout());
        JPanel pane2 = new JPanel(new FlowLayout());

        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("File");
        JMenu editMenu = new JMenu("Edit");
        JMenu helpMenu = new JMenu("Help");
        menuBar.add(fileMenu);
        menuBar.add(editMenu);
        menuBar.add(helpMenu);
        JMenuItem newMenu = new JMenuItem("New  (Ctrl+N)");
        JMenuItem openMenu = new JMenuItem("Open  (Ctrl+O)");
        JMenuItem saveMenu = new JMenuItem("Save  (Ctrl+S)");
        saveMenu.addActionListener(this);
        JMenuItem exitMenu = new JMenuItem("Exit  (Ctrl+W)");
        JMenuItem cutMenu = new JMenuItem("Cut  (Ctrl+X)");
        JMenuItem copyMenu = new JMenuItem("Copy  (Ctrl+C)");
        JMenuItem pasteMenu = new JMenuItem("Paste  (Ctrl+V)");
        JMenuItem infoMenu = new JMenuItem("Help  (Ctrl+H)");
        fileMenu.add(newMenu);
        fileMenu.add(openMenu);
        fileMenu.add(saveMenu);
        fileMenu.add(exitMenu);
        editMenu.add(cutMenu);
        editMenu.add(copyMenu);
        editMenu.add(pasteMenu);
        helpMenu.add(infoMenu);
        frame.setJMenuBar(menuBar);
        JComboBox packageChoice =  new JComboBox(tests);
        frame.add(packageChoice);


    }

     public void actionPerformed(ActionEvent e)
  {
  Object source = e.getSource();
  {
  }

}

Редактировать: забыл добавить вторую программу

public class JFrameWithPanel
{
    public static void main(String[] args)
    {
         JPanel panel = new Bar(new JFrame("CIT Test Program"));
    }
}

Как мне принять это, чтобы иметь все, где я этого хочу, и появится? Я очень запутался из-за этого, и теперь едва даже получаю то, как работают рамки.

Это было полезно?

Решение

Компоненты в качелях должны быть выложены в определенном порядке.

Вы начинаете с JFrame. Единственные компоненты, которые помещаются в JFrame, являются jmenubar и jpanel. Вы не добавляете какие-либо другие компоненты в JFrame. Вы добавляете компоненты в jpanel.

Вот код Ника, реорганизован, чтобы определить компоненты в правильном порядке. Я использовал Gridlayout, потому что это было быстрее. Вы должны использовать Gridbaglayout, как сказал Нивас.

public class Bar {

    private static final long serialVersionUID = 1L;

    public Bar(final JFrame frame) {
        JMenuBar menuBar = buildMenuBar();
        frame.setJMenuBar(menuBar);

        JPanel masterPanel = new JPanel(new GridLayout(2, 1));

        JPanel pane1 = new JPanel(new GridLayout(3, 1));
        pane1.add(new JLabel("Welcome to the CIT Test Program "));
        pane1.add(new JLabel("Please select which Test Package from the list below."));
        JButton button = new JButton("Click Me");
        pane1.add(button);

        JPanel pane2 = new JPanel(new GridLayout(1, 1));
        String[] tests = { "A+ Certification", "Network+ Certification",
                "Security+ Certification", "CIT Full Test Package" };
        JComboBox packageChoice = new JComboBox(tests);
        pane2.add(packageChoice);

        masterPanel.add(pane1);
        masterPanel.add(pane2);

        frame.add(masterPanel);
        frame.pack();

        frame.setVisible(true);
//      frame.setSize(250, 250);

    }

    public JMenuBar buildMenuBar() {
        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("File");
        JMenu editMenu = new JMenu("Edit");
        JMenu helpMenu = new JMenu("Help");
        menuBar.add(fileMenu);
        menuBar.add(editMenu);
        menuBar.add(helpMenu);
        JMenuItem newMenu = new JMenuItem("New  (Ctrl+N)");
        JMenuItem openMenu = new JMenuItem("Open  (Ctrl+O)");
        JMenuItem saveMenu = new JMenuItem("Save  (Ctrl+S)");
        saveMenu.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub

            }
        });
        JMenuItem exitMenu = new JMenuItem("Exit  (Ctrl+W)");
        JMenuItem cutMenu = new JMenuItem("Cut  (Ctrl+X)");
        JMenuItem copyMenu = new JMenuItem("Copy  (Ctrl+C)");
        JMenuItem pasteMenu = new JMenuItem("Paste  (Ctrl+V)");
        JMenuItem infoMenu = new JMenuItem("Help  (Ctrl+H)");
        fileMenu.add(newMenu);
        fileMenu.add(openMenu);
        fileMenu.add(saveMenu);
        fileMenu.add(exitMenu);
        editMenu.add(cutMenu);
        editMenu.add(copyMenu);
        editMenu.add(pasteMenu);
        helpMenu.add(infoMenu);
        return menuBar;
    }
}

Я переместил код Jmenubar в свой собственный метод, так, надеюсь, остальная часть кода легче понять.

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

Я использовал другой JPanel, чтобы держать два JLabels и JButton.

Я использовал третий jpanel, чтобы держать jcombobox.

Базовый узор выглядит следующим образом:

  • Определите jpanel.
  • Определите компоненты.
  • Добавьте компоненты в JPanel.
  • Добавьте JPanel в Master Jpanel
  • Добавьте мастер JPanel в JFrame.

Другие советы

Ник. Я думаю, что первое, что вы должны очистить, - это точно знать, что вы хотите.

Я помог тебе в этом вопросе https: //stackoverflow.com/questions/3055777/how-to -...

От того, что вы описываете, у вас уже есть то, что вам нужно. Что не так с этим:

alt text

Итак, я действительно думаю, что вы должны четко описать то, что вы хотите, чтобы получить его.

Мы бы вам помочь, но вы должны четко определить, какова ваша проблема.

1 Ваша вторая программа не скомпилируется. Вы пытаетесь назначить JFANE JPanel.

Это должно было быть

 JFrame frame = new Bar(new JFrame("CIT Test Program")); 

2 Оно работает. Что вы хотите там. Но не так, как вы этого хотите, потому что вы не сказали Java, как вы хотите, чтобы это отобразить. Попробуйте использовать A. LayoutManager подобно Gridbaglayout..

Если вы спешите создать графический интерфейс, попробуйте IDE, как NetBeans, которые облегчают вашу работу через сопротивление.

РЕДАКТИРОВАТЬ:

Пример:

public class TestN extends JFrame
{
    private JLabel label ;
    private JComboBox combo;
    private JButton button;
    public TestN()
    {
        label = new JLabel("Label:");
        combo = new JComboBox();
        combo.addItem("Item 1");
        combo.addItem("Item 2");
        combo.addItem("Item 3");

        setLayout(new GridBagLayout());

        GridBagConstraints c1 = new GridBagConstraints();
        c1.gridx = 0;
        c1.gridy = 0;
        c1.weightx = 1;
        c1.weighty = 1;
        add(label, c1);

        GridBagConstraints c2 = new GridBagConstraints();
        c2.gridx = 1;
        c2.gridy = 0;
        c2.weightx = 1;
        c2.weighty = 1;
        add(combo, c2);

        button = new JButton("Ok");
        GridBagConstraints c3 = new GridBagConstraints();
        c3.gridx = 2;
        c3.gridy = 0;
        c3.weightx = 1;
        c3.weighty = 1;
        add(button, c3);

        setTitle("Test");
        setSize(200,100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args)
    {
        new TestN();
    }
}

Отказ от ответственности: Это основной пример, просто чтобы привести пример. Не предназначен для того, чтобы быть продукцией ;-)

У тебя есть:

public class Bar extends JFrame implements ActionListener
{
    public Bar(final JFrame frame)
    {
        String[] tests = { "A+ Certification", "Network+ Certification", "Security+ Certification", "CIT Full Test Package" };
        JButton button = new JButton("Click Meh");
        add(new JLabel("Welcome to the CIT Test Program "));
        add(new JLabel("Please select which Test Package from the list below."));
        frame.setVisible(true);
        frame.setSize(250,250);

Каждый Bar Объект наследует от JFrame (то есть а Bar объект является тип JFrame) но вы проходите в другом JFrame объект (то frame Параметр) в конструкторе. Вы тогда называете некоторые методы на Bar объект - например, добавление двух JLabel объекты - и некоторые на прохождении JFrame - такой как setVisible а также setSize методы.

Так что у вас есть два разных JFrame Объекты, и вы делаете некоторую работу на каждый из них, и только один из них всегда собирается быть видимым.

Похоже, что единственная причина, по которой вы проходите в JFrame К конструктору - установить заголовок окна. Если вы проходите в String с названием на Bar Конструктор, а затем звонить super(title); как первая строка Bar Конструктор тогда вам не понадобится пропущенные JFrame вообще

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top