Это делает меня очень сердитым, я работал над этим в течение 2 дней, имею 2 открытые книги и просмотрел их и ВСЕ ЕЩЕ не могу заставить эту программу выполнять способ, которым я хочу выполненный. Я перехожу к сути дела, где, если это не помогает, я вышел.
Я хочу приложение ПРОСТОГО КАДРА. Этому центрировали JComboBox наверху. Рядом с ним текстовое поле, достаточно большое для показа числовых цифр такой, поскольку на 49,99$ ниже его место для Текстовой области, показывающей, что условия предоставления услуг Ниже этого являются флажком, соглашающимся на условия предоставления услуг Ниже этого, 2 кнопки "Accept" и "Decline"
Я работал над этим в течение 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"));
}
}
Как я заставляю это иметь все, где я хочу это и обнаруживаюсь? Я очень смущен из-за этого и теперь едва даже добираюсь, как работают Кадры.
Компоненты в Swing должны располагаться в определенном порядке.
Вы начинаете с 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 для хранения двух ярлыков JLabel и кнопки JButton.
Я использовал третью панель JPanel для хранения JComboBox.
Основной шаблон выглядит следующим образом:
1. Ваша вторая программа не компилируется. Вы пытаетесь назначить JFrame для JPanel.
Должно было быть
JFrame frame = new Bar(new JFrame("CIT Test Program"));
2. Оно работает. То, что вы хотите, есть. Но не так, как вы этого хотите, потому что вы не сказали java, как вы хотите, чтобы он отображался. Попробуйте использовать 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
Ник. Я думаю, что первое, что вам нужно прояснить, - это точно знать, чего вы хотите.
Я помог вам в этом вопросе https: //stackoverflow.com/questions/3055777/how-to -...
Судя по тому, что вы описываете, у вас уже есть то, что вам нужно. Что в этом плохого:
Итак, я действительно думаю, что вы должны четко описать то, что вы хотите, чтобы получить это.
Мы поможем вам, но вы должны четко определить, в чем ваша проблема.