java - 无法看到java框架中的所有文本

标签 java swing jpanel frame jscrollpane

我有一个无法解决的问题。我对编程真的很陌生。

主框架(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/

相关文章:

java - 如何让 JTextPane 显示省略号以表示文本溢出?

java - JFrames 中的 ActionListener

java - JFrame - 在调整窗口大小之前内容无法正确显示

java - 计时 JPanels 的显示时间

java - 在以下情况下使用 DecimalFormat

java - 二进制补码 0 到 1、1 到 0

java - JOptionPane.showMessageDialog 不显示文本

具有两个面板的 Java 布局中心

java - 在 Sublime Text 3 中导入自定义 java 包

java - 如何通过 boolean 变量定义的 3 种过滤器类型来过滤 ArrayList?