我有一个无法解决的问题。我对编程真的很陌生。
主框架(glavnoOkno)打开正常。单击主框架上的按钮时,将打开新框架。并且您看不到其中的所有文本或文本框。那些可以进入屏幕宽度的,但其他则不行。
我尝试了 .pack(),但它不起作用,然后我尝试了 ScrollPane(),但这也不起作用(可能是因为我不知道把它放在哪里:().. 无论如何,我的代码分为四个类。我在这里放了两个,我认为很重要。如果我错了,我也可以放另外两个。所有变量都不是英文的,我希望这不是太大的问题。
所以...请帮忙。这是主框架的类。底部定义了第二个框架。
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GlavnoOkno extends JFrame implements ActionListener {
private JLabel naslov;
private JButton gumbVnesiEleganten;
private JButton gumbKoncaj;
private JPanel plosca;
private JScrollPane zvitek = new JScrollPane();
private JTextArea tekstnoOkno = new JTextArea();
private Trgovina trgovina;
public void setTrgovina(Trgovina trgovina) {
this.trgovina = trgovina;
}
public Trgovina getTrgovina() {
return trgovina;
}
public JTextArea getTekstnoOkno() {
return tekstnoOkno;
}
public GlavnoOkno(Trgovina trg) {
setTrgovina(trg);
Container cp = this.getContentPane();
cp.setLayout(new BorderLayout());
naslov = new JLabel("Prosim, da pritisnete ustrezen gumb ...");
cp.add(naslov, BorderLayout.PAGE_END);
plosca = new JPanel();
cp.add(plosca, BorderLayout.PAGE_START);
gumbVnesiEleganten = new JButton("Vnesi eleganten cevelj.");
plosca.add(gumbVnesiEleganten);
gumbVnesiEleganten.addActionListener(this);
gumbKoncaj = new JButton("Koncaj");
plosca.add(gumbKoncaj);
gumbKoncaj.addActionListener(this);
zvitek.setAutoscrolls(true);
cp.add(zvitek, BorderLayout.CENTER);
zvitek.getViewport().add(tekstnoOkno);
setSize(300, 400);
setTitle("Glavno okno programa");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
Object m = e.getSource();;
if (m == gumbVnesiEleganten) {
Eleganten novi = null;
try {
JFrame oknoVnesiEleganten = new VnesiEleganten(novi, this);
oknoVnesiEleganten.setVisible(true);
oknoVnesiEleganten.pack();
trgovina.getCevlji1()[0] = novi;
} catch (Exception e1) {
getTekstnoOkno().append("Napaka - poskusite znova!\n");
}
}
else if (m == gumbKoncaj) {
System.exit(0);
}
}
}
这是第二帧的类。
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class VnesiEleganten extends JFrame implements ActionListener {
private Eleganten nov;
private JLabel naslov;
private GlavnoOkno glavnoOkno;
private JButton gumbShraniEleganten;
private JTextField poljeCena;
private JTextField poljePopust;
private JTextField poljeMaterial;
private JTextField poljeBarva;
private JTextField poljeOtroski;
private JTextField poljeSpol;
private JTextField poljePeta;
private JPanel plosca;
public void setEleganten(Eleganten novi) {
this.nov = novi;
}
public Eleganten getEleganten() {return nov;}
public VnesiEleganten(Eleganten novi, GlavnoOkno okno) {
setEleganten(novi);
glavnoOkno = okno;
Container cp = this.getContentPane();
cp.setLayout(new BorderLayout());
naslov = new JLabel("Prosim, da vnesete polja, shranite eleganten cevelj ter zaprete okno.");
cp.add(naslov, BorderLayout.PAGE_END);
plosca = new JPanel();
cp.add(plosca, BorderLayout.PAGE_START);
plosca.add(new JLabel("Cena = "));
poljeCena = new JTextField(10);
plosca.add(poljeCena);
plosca.add(new JLabel("Popust = "));
poljePopust = new JTextField(10);
plosca.add(poljePopust);
plosca.add(new JLabel("Material = "));
poljeMaterial = new JTextField(20);
plosca.add(poljeMaterial);
plosca.add(new JLabel("Barva = "));
poljeBarva = new JTextField(20);
plosca.add(poljeBarva);
plosca.add(new JLabel("Otroski (false/true) = "));
poljeOtroski = new JTextField(10);
plosca.add(poljeOtroski);
plosca.add(new JLabel("Moski/zenski = "));
poljeSpol = new JTextField(10);
plosca.add(poljeSpol);
plosca.add(new JLabel("Visina pete = "));
poljePeta = new JTextField(10);
plosca.add(poljePeta);
gumbShraniEleganten = new JButton("Shrani");
plosca.add(gumbShraniEleganten);
gumbShraniEleganten.addActionListener(this);
setTitle("Vnos novega elegantnega cevlja.");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
Object m = e.getSource();;
Eleganten novi = null;;
if (m == gumbShraniEleganten) {
try {
novi = new Eleganten();
novi.setCena(Double.parseDouble(poljeCena.getText()));
novi.setPopust(Integer.parseInt(poljePopust.getText()));
novi.setMaterial(poljeMaterial.getText());
novi.setBarva(poljeBarva.getText());
novi.setOtroski(Boolean.parseBoolean(poljeOtroski.getText()));
novi.setSpol(poljeSpol.getText());
novi.setVisinaPete(Double.parseDouble(poljePeta.getText()));
setEleganten(novi);
glavnoOkno.getTekstnoOkno().append("" + novi + "\n");
poljeCena.setText("");
poljePopust.setText("");
poljeMaterial.setText("");
poljeBarva.setText("");
poljeOtroski.setText("");
poljeSpol.setText("");
poljePeta.setText("");
} catch (Exception e1) {
glavnoOkno.getTekstnoOkno().append("Napaka - poskusite znova!\n");
}
}
}
}
最佳答案
旁注:非英语变量名称使得阅读代码变得极其困难。避免这种情况。
<小时/>我认为您应该使用 JScrollPane。试试这个:
JPanel yourPanel = new JPanel();
// all kinds of code that adds elements to it
// now wrap the panel in a scroll pane
JScrollPane scrollPane = new JScrollPane(yourPanel);
// and use the scroll pane instead of your main component
Container cp = this.getContentPane();
cp.setLayout(new BorderLayout());
cp.add(scrollPane, BorderLayout.CENTER);
关于java - 无法看到java框架中的所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16164602/