Witajcie!
Mam pewien problem. Uczę się aktualnie o GUI i wszystko szło gładko do momentu ustawienia rozmiaru JScrollPane.
Otóż mimo, że użyłem setBounds() dla scrollPane to pole textowe nie zmienia swojego rozmiaru tylko jest rozciągnięty na całą ramkę.
Dowiedziałem się, że LayoutManager jest ustawiony an default i gdy ustawiam setSize() dla JFrame automatycznie ignoruje on ustawienia innych komponentów.
Nie wiem jak mam się zabrać do zmiany ustawień LayoutManager więc prosił bym was o jak najwięcej informacji na ten temat. Starałem się przestudiować dokumentację ale mój angielski w dziedzinie programowania nie jest jeszcze wystarczalny by swobodnie się poruszać w dokumentacjach bibliotek.
pozdrawiam a tutaj kod
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import static javafx.scene.input.KeyCode.X;
import javax.swing.Box;
import javax.swing.JCheckBox;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
public class JMenuTest extends JFrame implements ActionListener
{
JMenuBar menuBar;
JMenu menuPlik, menuNarzedzia, menuPomoc, menuOpcje;
JMenuItem mOtworz, mZapisz, mWyjscie, mNarz1, mNarz2, mAbout, mOpcja1, mOpcja2;
JCheckBoxMenuItem chOpcja3;
JTextArea notatnik;
// JScrollPane scrollPane;
public JMenuTest()
{
setSize(800, 800);
setTitle("Menu testowe");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menuBar = new JMenuBar();
menuPlik = new JMenu("Plik");
mOtworz = new JMenuItem("Otwórz");
mZapisz = new JMenuItem("Zapisz");
mWyjscie = new JMenuItem("Wyjdź");
menuPlik.add(mOtworz);
mOtworz.addActionListener(this);
menuPlik.add(mZapisz);
mZapisz.addActionListener(this);
menuPlik.addSeparator();
menuPlik.add(mWyjscie);
mWyjscie.addActionListener(this);
mWyjscie.setAccelerator(KeyStroke.getKeyStroke("ctrl X"));
menuNarzedzia = new JMenu("Narzędzia");
mNarz1 = new JMenuItem("Narz1");
mNarz1.setEnabled(false);
mNarz2 = new JMenuItem("Narz2");
mNarz2.addActionListener(this);
menuNarzedzia.add(mNarz1);
menuNarzedzia.add(mNarz2);
menuPomoc = new JMenu("Pomoc");
mAbout = new JMenuItem("O programie");
menuPomoc.add(mAbout);
mAbout.addActionListener(this);
menuOpcje = new JMenu("Opcje");
mOpcja1 = new JMenuItem("Opcja 1");
mOpcja2 = new JMenuItem("Opcja 2");
chOpcja3 = new JCheckBoxMenuItem("tak");
menuOpcje.add(mOpcja1);
menuOpcje.add(mOpcja2);
menuOpcje.add(chOpcja3);
chOpcja3.addActionListener(this);
menuNarzedzia.add(menuOpcje);
setJMenuBar(menuBar);
menuBar.add(menuPlik);
menuBar.add(menuNarzedzia);
menuBar.add(menuPomoc);
menuBar.add(Box.createHorizontalGlue());
notatnik = new JTextArea();
JScrollPane scrollPane = new JScrollPane(notatnik);
scrollPane.setBounds(50, 50, 200, 200);
add(scrollPane);
}
@Override
public void actionPerformed(ActionEvent e)
{
Object z = e.getSource();
if (z == mOtworz)
{
JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
File plik = fc.getSelectedFile();
JOptionPane.showMessageDialog(null, "Wybrany plik to: " + plik.getAbsolutePath());
}
}
else if (z == mZapisz)
{
JFileChooser fc = new JFileChooser();
if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION)
{
File plik = fc.getSelectedFile();
JOptionPane.showMessageDialog(null, "Zapisany plik " + plik);
}
}
if (z == mWyjscie)
{
int odp = JOptionPane.showConfirmDialog(null, "czy na pewno wyjsc?", "Pytanie", JOptionPane.YES_NO_OPTION );
if (odp == JOptionPane.YES_OPTION)
{
dispose();
}
else if (odp == JOptionPane.NO_OPTION)
{
JOptionPane.showMessageDialog(null, "Wiedziałem");
}
else if (odp == JOptionPane.CLOSED_OPTION)
{
}
}
if (z == chOpcja3)
{
if (chOpcja3.isSelected())
{
mNarz1.setEnabled(true);
}
else if (!chOpcja3.isSelected()) // Jeśli nie jest zaznaczona (zaprzeczenie)
{
mNarz1.setEnabled(false);
}
}
if (z == mAbout)
{
JOptionPane.showMessageDialog(this, "Program demonstruje Menu \n Wersja 1.0");
}
if (z == mNarz2)
{
String sMetry = JOptionPane.showInputDialog("Podaj długość w metrach");
double metry = Double.parseDouble(sMetry);
double stopy = metry/0.3048;
String sStopy = String.format("%.2f", stopy); // %.2f ogranicza zaokrąglenie do 2 miejsc po przecinku
JOptionPane.showMessageDialog(null, metry + " metrów" + " = " + sStopy + " stóp");
}
}
public static void main(String[] args)
{
JMenuTest appMenu = new JMenuTest();
appMenu.setVisible(true);
}
}