当前位置: 首页 > 知识库问答 >
问题:

不是所有元素都接触到JFrame的侧面[重复]

燕经国
2023-03-14

下面是我的代码,非常感谢。

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;


@SuppressWarnings({ "serial", "unused" })
public class MedGUITest extends JFrame {

        private JLabel medName;
        private JLabel medTime;
        private JLabel medDose;
        private JLabel finished;

        private JTextField textFieldMed;
        private JTextField textFieldTime;
        private JTextField textFieldDose;

        private JButton submitButton;
        private JButton meds;
        static int winWidth = 300;
        static int winLength = 300;

        JTextArea ta = new JTextArea(winWidth,winLength);
        JPanel panel = new JPanel();

        public MedGUITest() throws FileNotFoundException, IOException{
            panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
            add(panel);

                setLayout(new FlowLayout());

                medName = new JLabel("Type Medication Here:");
                panel.add(medName);

                textFieldMed = new JTextField("",15);
                panel.add(textFieldMed);

                medDose = new JLabel("Type Medication Dose:");
                panel.add(medDose);

                textFieldDose = new JTextField("",15);
                panel.add(textFieldDose);

                medTime = new JLabel("Type Medication Time:");
                panel.add(medTime);

                textFieldTime = new JTextField("",15);
                panel.add(textFieldTime);

                submitButton = new JButton("Click Here to Add");
                submitButton.addActionListener(new ActionListener(){

                        @Override
                        public void actionPerformed(ActionEvent e){
                                String medName = textFieldMed.getText();
                                String medDose = textFieldDose.getText();
                                String medTime = textFieldTime.getText();
                                File med = new File("med.txt");

                                try(PrintWriter out= new PrintWriter(new FileWriter(med,true))) {
                                        out.println("Medication: " + medName + " " +"Dosage: "+ medDose + " Mg"+ " " +"Time of day: "+ medTime);
                                        String lastMed = ("Medication: " + medName + " " +"Dosage: "+ medDose + " Mg"+ " " +"Time of day: "+ medTime+ "\n");
                                        finished.setText("Your Med has been added");
                                        Timer t = new Timer(5000, new ActionListener() {

                                            @Override
                                            public void actionPerformed(ActionEvent e) {
                                                finished.setText(null);
                                            }
                                        });
                                        t.setRepeats(false);
                                        t.start();
                                        ta.append(lastMed);
                                } catch (IOException e1) {
                                        e1.printStackTrace();
                                }

                        }

                });
                panel.add(submitButton);

                final File med = new File("med.txt");

                if(med.exists()){

                }else{
                meds = new JButton("Click Here to see meds");
                meds.addActionListener(new ActionListener(){
                        public void actionPerformed(ActionEvent e) {

                                if(med.exists()){
                                try {
                                        ta.read(new FileReader("med.txt"),null);

                                } catch (IOException e1) {
                                        e1.printStackTrace();
                                }
                                panel.add(ta);}

                        }
                }); 
                panel.add(meds);
                }


                finished = new JLabel("");
                panel.add(finished);


                if(med.exists()){
                ta.read(new FileReader("med.txt"),null);
                panel.add(ta);}
        }



        public static void main(String args[]) throws FileNotFoundException, IOException{



        MedGUITest gui = new MedGUITest();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.pack();
        gui.setVisible(true);
        gui.setTitle("Standard GUI");

        }

}

共有1个答案

梁泰
2023-03-14

尝试向内容窗格添加emptyborder。..

getContentPane().setBorder(new EmptyBorder(10, 10, 10, 10));

您还可以考虑使用一个提供“填充”的布局管理器,就我个人而言,我更喜欢gridbaglayout,但您也可以查看flowlayout(intalign,inthgap,intvgap),但这将影响所有组件之间的间距,而不仅仅是框架

看看如何在容器中使用边框和布局组件,以获得更多的想法

 类似资料:
  • 我已经找了几个小时类似的问题,但我对这个问题一无所知。希望有人能帮助我。 这里是类除了导入: 主要功能如下: 没有显示中的元素(,)。

  • 我有一个简单的设置,只有一个会话,支持一个JSF xhtml文件。在此范围内,我触发一个事件,期望同一会话和任何其他会话在提交时都将接收该事件。 然而,奇怪的是,我可以看到在事件触发期间,只有当前会话接收到它,而没有任何其他会话。我通过使用两种不同的浏览器(本例中为Safari和Firefox)来确保我有两个不同的会话。 我是否错误地理解了基于CDI的事件的概念? 支持会话的bean: xhtml

  • 问题内容: 我有这段代码来获取我需要的所有元素并进行一些处理。问题是我需要指定每个面板以获取其中的元素。 我想做这样的事情,并且不需要指定所有面板名称就可以获取所有元素。我该怎么做。下面的代码无法获取所有元素。 问题答案: 您可以编写一个递归方法并在每个容器上递归: 该站点提供了一些示例代码: 如果只需要直接子组件的组件,则可以将递归深度限制为2。

  • 我试图获取数组的每个元素并检查它是否是回文。如果给定数组中的所有元素都是回文,那么它应该返回1,如果不是,那么它应该返回0。 例如输入5 111 222 333 444 555预期输出1我的输出0 谢谢你的帮助。

  • 问题内容: 首先,对无法提供任何源代码表示歉意。我的项目很大,将所有内容链接起来都是不切实际的,而且我还无法缩小非常烦人的问题。我将尽力在这里进行解释。 我在代码的每个循环中动态创建类的新实例。在循环中会为该实例动态地提供几个属性,例如’name’。在每个循环的最后,新生成的实例将添加到另一个第3类中保存的ArrayList中。 但是,问题在于,无论出于何种原因添加新元素时,所有先前的元素都会更改

  • 传入:{ text: "子目录一", id: 880 } 期望输出: 传入:{ text: "根目录", id: 9521 } 期望输出: