小编liv*_*ove的帖子

什么是最好的布局管理器?

在此输入图像描述

我想做一个看起来像上面的gui.现在我有一个面板,它将保存名称标签,名称文本字段,brith日期标签和生日文本字段.我的问题是什么是最好的布局管理器在面板上使用,以便"名称组件"行(标签+文本字段)和"出生日期组件"行(标签+文本字段),将垂直均匀地分布在小组.

我想过使用流布局,但这会导致两行组件之间没有间隙.我想过使用网格布局,但我不知道两行组件之间的间隙大小.

一个更复杂的方法......我考虑将名称标签和文本字段放在一个面板中,并将出生日期标签和文本字段放在另一个面板中,然后使基本面板边框布局和设置名称为北,生日日期为南. ..但是我仍然需要确保名称组件在名称面板中垂直居中,而birthdate组件在出生日期面板中垂直居中.

任何帮助表示赞赏.目标是确保名称组件行和出生日期组件行垂直展开,名称组件垂直居中于上半部分,出生日期组件垂直居中于下半部分.如果有什么问题让人感到困惑,请告诉我我会尝试改写以便更好地理解.

我正在使用严格的Java swing与eclipse,没有GUI构建器或类似的东西.

java swing layout-manager

8
推荐指数
2
解决办法
9416
查看次数

strtok中的分段错误

我一直在收到这个错误.我很确定它与内存分配有关,但我不太确定如何修复它.

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>

char * VOWELS ="aeiouAEIOU";


void printLatinWord(char *a);


int main(int argc, char **argv){
    char phrase[100];
    char *word = malloc(sizeof(char) *100);

    printf("Enter the phrase to be translated: \n");

    fgets(word, 100, stdin);
    printf("The phrase in Pig Latin is:\n");
    word = strtok(phrase, " ");
    printLatinWord(word);

    return 0;
}

void printLatinWord(char *word){
    while (strchr(VOWELS, *word) == NULL){
    char consonant = *word;
    char *to=word, *from=word+1;

    while (*from)
         *to++=*from++;
         *to=consonant;
    }
    printf("%say\n", word);
}
Run Code Online (Sandbox Code Playgroud)

输出给出"分段错误(核心转储)"

c segmentation-fault

2
推荐指数
1
解决办法
862
查看次数

在运行时从窗体删除TFrame

我正在使用C ++ Builder创建VCL表单应用程序。现在我有一个包含许多组件的TFrame,看起来像这样...

在此处输入图片说明

我也有一个按钮调用“添加”。基本上,每当我按下表单上的“添加”按钮时,都会向其中添加一个新的TFrame,并在前一个TFrame下方添加一个看起来像表格的东西。为了添加重复项,我必须在创建TFrame之前每次都对其重命名。

    int __fastcall TForm1::AddMapCells(void)
    {
        Num++;
        TFrame1 * MyFrame = new TFrame1(Form1);
        MyFrame->Parent=Form1;
        MyFrame->Name = "TFrame" + IntToStr(Num);
        MyFrame->Top = 23*Num;
        return Num;
    }
Run Code Online (Sandbox Code Playgroud)

因此,TFrame的命名为TFrame1,TFrame2,TFrame3等。

现在的问题是我要制造它,因此每当我按下TFrame的“ X”按钮时,它都会删除该TFrame,并且我不确定该怎么做。我在想,也许每次创建TFrame时,我都可以重命名“ X”按钮,所以它就像Button1,Button2,Button3等。然后删除程序,只需将ButtonX与TFrameX匹配即可识别要删除的TFrame。例如,如果我按下按钮4,它应该与TFrame4匹配并删除TFrame4。

我不知道如何实现这个想法。还是会有更简单的方法来做到这一点?

c++ runtime c++builder tframe

2
推荐指数
1
解决办法
2101
查看次数