小编Ste*_*ess的帖子

Java如何:正确的GUI编码?

这个是一个很长的,下面是我的"主要"类,它拥有我的大多数UI逻辑和所有的听众等.无论如何你可以看到我把很多代码卡在一个类中,整个事情似乎难以理解但它确实有效.

  1. 我创建了GUI whit Netbeans GUI Editor的最终外观
  2. Nebeans生成的源代码为您提供了私有变量,允许您与添加到表单的所有组件进行交互.
  3. 我在记事本中打开了Java类,我删除了所有阻止我编辑Netbeans中生成的代码的注释,现在我可以根据自己的喜好编辑整个类.

我在一个单独的包中有一个单独的GUI类,我在我的initUI()函数中调用该类,然后从这里引用所有组件并编写将这些组件作为参数的方法,并为这些组件添加特定的监听器.我还引用方法setter/getters的每个GLOBAL变量而不是直接引用它们.正如您所看到的,函数列表正在堆积在initUI()中,而我甚至都不在那里.

我猜这甚至不是专业的方法,你能不能给我提供新手提示,例子和建议如何改进所有这些代码,因为即使这一切都有效,因为它应该是非常非常丑陋的看,有没有书籍教程解释如何编写更大的应用程序的方法.

即使我在这个GUI中途完成这个GUI我喜欢尝试,并且我被告知JavaFX对于使用Java GUI更好,而且你获得的代码更令人愉快,就像你在Java Swing中得到的那样但在另一方面,JavaFX有很多关于其尚未完全准备好使用的投票.

无论如何这里是我的代码:

package ept.controller;

import ept.view.EPTMain;
import ept.model.EPTEvent_Model;
import ept.model.EPTLocal_Model;
import ept.model.EPTModule_Model;
import java.awt.Font;
import java.awt.MouseInfo;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.DefaultListModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;


public class EPTIndex_Controler {

    public EPTIndex_Controler() {
        initUI();
    }

    //Globals
    protected String selectedTower = null;
    protected Integer selectedModules = 0;

    public void …
Run Code Online (Sandbox Code Playgroud)

java swing

3
推荐指数
1
解决办法
2123
查看次数

Python - 通过套接字发送文件

我一直在尝试实现一个小型的SERVER - CLIENT应用程序但是跑进了一个错误:

socket.error:[Errno 10057]不允许发送或接收数据的请求,因为没有连接套接字(当使用sendto调用在数据报套接字上发送时)没有提供地址

服务器:

class Server:
    gate = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    host = socket.gethostname()
    port = 0
    file = ''

    def __init__(self, port):
        self.port = port
        self.gate.bind((self.host, self.port))  
        self.listen()

    def listen(self):
        self.gate.listen(10)
        while True:
            add = self.gate.accept()
            self.reciveFileName()
            self.reciveFile()


    def reciveFileName(self):
        while True:
            data = self.gate.recv(1024)
            self.file = data

    def reciveFile(self):
        createFile = open("new_"+self.file, "wb")
        while True:
            data = self.gate.recv(1024)
            createFile.write(data)
        createFile.close()



a = Server(1111)
Run Code Online (Sandbox Code Playgroud)

客户:

class Client:
    gateway = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #host = socket.gethostname()
    host = ''
    port …
Run Code Online (Sandbox Code Playgroud)

python sockets networking

3
推荐指数
1
解决办法
1万
查看次数

Java - 由块读取文件?

我知道如何按字节读取文件但无法找到如何以字节块读取它的示例.我有一个字节数组,我想读取512字节的文件,并通过套接字发送它们.

我试过通过读取文件的总字节数,然后减去512字节,直到我得到一个小于512字节的块并发信号通知EOF和传输结束.

我正在尝试实现TFTP,其中数据以512字节的块发送.

无论如何会感谢一个例子.

java sockets io inputstream

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

Java DOM XML解析::获取元素属性值

如何从元素中提取属性值.我的xml节点写得像这样<nodename attribute ="value">我需要将其解压缩以将其与另一个字符串进行比较.

但由于我没有调用document.getElementsByTag,所以我不能使用.getAttribute("att.").getNodeValue来获取值.

相反,我有一个NodeList和getAttribute()没有getNodeValue.

package dev;

import java.io.*;
import java.util.*;

import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;



public class Parser {


    static String def = "\"admin\",\"base\",\"Default\",\"simple\"";

    static String category = "";
    static String sku = "";
    static String has_options = "0";

    static String name = "";
    static String image = "";
    static String small_image = "";
    static String thumbnail = "";

    public static void toCSV() {
        try {
            BufferedWriter output = new BufferedWriter(new FileWriter("sim.csv", true));
            output.newLine(); …
Run Code Online (Sandbox Code Playgroud)

java xml dom

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

PHP DOMDocument loadHTML 错误

它回来了

( ! ) 警告:DOMDocument::loadHTML() [domdocument.loadhtml]:在实体中错误放置 DOCTYPE 声明,第 3 行在 C:\wamp\www\source.php 第 8 行

编码:

<?php

    $url = "http://www.some-plain-html-website.com";

    $content = file_get_contents($url);

    $dom = new DOMDocument;
    $dom->loadHTML($content);

?>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它不会解析 $content。如果我使内容像 $content = ""; 我通过元素标签名称解析它它没有问题但是如果我给它返回 file_get_content() 方法它会产生那个错误。

file_get_contents() 的文档说它返回一个字符串但由于某种原因它不起作用我什至尝试过 $content = (string)file_get_contents($url);

同样的事情提前感谢所有的帮助。

html php parsing dom domdocument

3
推荐指数
1
解决办法
6348
查看次数

使用javascript分配php变量

我从envato市场购买了modalbox插件,用javascript制作我想用它来实现我的类别>子类别>项目.无论如何我知道JavaScript变量可以使用php分配值但是我需要相反的.

在我的第一步,我让用户使用基本链接选择一个类别,然后onclick甚至将他们带到第二张幻灯片,我想显示子类别和与此类别相关的项目.

我尝试了两件事:

1) setting onClick = "step2();<?php $chosen_cat = ' . $this->db->escape(trim($category)) . '?>"
Run Code Online (Sandbox Code Playgroud)

希望我可以简单地将所选类别的名称分配给一个值,然后在step2()javascript方法中使用$ chosen_cat来显示产品,但这会破坏javascript,因为输出中存在冲突;

2)我将step2()更改为step2(类别)然后使用,onclick ="step2(db-> escape($ category););" 这将值传递给step2()方法然而现在我需要调用< - 我需要打印出该字符串到php然而我不知道如何解决这个问题考虑PHP - > JS是可行的,因为它的服务器客户关系,但回来..

$ this-> db-> escape()是一个http://codeigniter.com/user_guide/database/queries.html codeigniter方法.

我的代码:

<script type="text/javascript">

        function step1() {
            modalbox.show(new Element("div").insert(
                new Element("p", { "align": "justify" }).insert(
                    <?php 
                        $categories = $items;
                        $chosen_cat = '';
                    ?>
                    <?php 
                        $i = 0;
                        foreach($categories as $category => $itemarray) {
                            $i++;
                            if($i==27){
                                echo  $this->db->escape('<a class="category" onclick="step2();<?php $chosen_cat = ' . $this->db->escape(trim($category)) . '?>" href="#">'. trim($category) …
Run Code Online (Sandbox Code Playgroud)

html javascript php codeigniter

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

修剪传递类实例到$ app

<?php
  require 'vendor/autoload.php';

  // Include all controllers
  foreach(glob("controllers/*.php") as $controller)
  {
    include $controller;
  }

  // Instantiate a new Slip application
  $app = new \Slim\Slim(array(
    'debug' => true
  ));

  // HOME CONTROLLER
  $home = new Home;
  $vr = $home->index();

  // Register application routes
  $app->get('/', function () {
      echo $vr;
  });

  // Run application
  $app->run();
Run Code Online (Sandbox Code Playgroud)

这是我的控制器我想使用控制器而不是将所有内容保存在这个单独的文件中.无论如何,我有一个控制器地图,我保留所有控制器.我自动将它们全部包含在开始但是我似乎无法将$home变量传递给get()方法,所以我可以调用$vrindede或者$home->index()

php slim

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

安装方法只运行一次

我有:

1. IntegrationTestCase extends TestCase  
2. UnitTestCase extends TestCase
3. AcceptanceTestCase extends TestCase  
Run Code Online (Sandbox Code Playgroud)

在这些中,我有很多非静态方法,它们在很多测试中使用.我的所有Test类都扩展了这3个类中的一个.

现在在很多测试类中,我有一个setUp方法,它准备所需的数据和服务,并将它们分配给类变量:

class SomeTestClass extends IntegrationTestCase
{
    private $foo;

    public function setUp()
    {
        parent::setUp();

        $bar = $this->createBar(...);
        $this->foo = new Foo($bar);
    }

    public function testA() { $this->foo...; }  
    public function testB() { $this->foo...; }
}
Run Code Online (Sandbox Code Playgroud)

setUp每个测试都会遇到问题,无法完成我想要做的事情,如果setUp需要花费很长时间,那么这个方法会乘以测试方法的数量.

使用public function __construct(...) { parent::__construct(..); ... }会产生问题,因为现在Laravel中的低级方法和类不可用.

php phpunit laravel

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

MySQL数据库表中的90列

我正在努力找到解决问题的最佳方案.

基本上我有一个表单,主要由复选框组成,但表单将有60-90个复选框.我将有一些这样的形式,所以我遇到的问题是如何以最通用或简单的方式创建它,所以我不必手动为每个表创建每个表单.

我的解决方案是简单地创建一个表格,这里是我得到一个包含大约90列的表,在任何客户端中查看都非常混乱,并且随着表的增长对性能有一点影响但是因为大多数字段类型都没有那么多是tinyint.

在我的模型中,我基本上定义了一个数组:

$schema = array(
  'column_name' => array('checkbox(input field type)', 'label')
);

public function getSchema()
{
 $this->schema['column_name]['value'] = $this->column_name;
 // .. Now I have to type this 100 times by hand..
}
Run Code Online (Sandbox Code Playgroud)

这现在允许我只有1个表单并轻松生成所有字段

    <form>
     @foreach($schema as $field => $attrs)
      @if($attrs[0] == 'checkbox')
       <input type="checkbox" name="{{ $field }}" value="{{ $attrs['value'] }} {{ ($attrs['value'] == 1) ? 'checked' : '' }}>{{ $attrs[1] }}
      @elseif($attrs[0] == 'text')
       ...
      @endif
     @endforeach

</form>
Run Code Online (Sandbox Code Playgroud)

所以这是一个非常优雅的解决方案,但是如果我必须在getSchema()函数中为每个字段定义它们的值,或者我必须首先定义模式数组,最后就好像我定义了两个表单,我真的没那么多.

我想我在这里找到了一些解决方案,但不完全知道如何摆脱手动定义架构数组和方法.

我的一个想法就是只有一个字段值并在我的模型中定义局部变量,在执行IO并序列化对象并存储它时填充这些,但这似乎是浪费和糟糕的做法.

php mysql laravel eloquent laravel-4

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

保存 id 数组而不是对象

我有这个 HTML 元素:

<tags-input
   ng-model="film.genre"
   display-property="name"
   key-property="id"
   placeholder="Genre"
   replace-spaces-with-dashes="false">
  <auto-complete source="loadGenres($query)"></auto-complete>
</tags-input>
Run Code Online (Sandbox Code Playgroud)

这会创建一个与 Stackoverflow 上类似的标签输入字段。这是正在使用的包http://mbenford.github.io/ngTagsInput/

现在 loadGenres 将返回一个像这样的对象{name: "Genre name", id: 4}。它将被存储film.genre为这样。这是一个问题,因为 API 服务film.genre = [4, ...]基本上期望它必须是一个 id 数组。

我不完全确定如何解决这个问题。我试图在我的newFilm()方法循环中创建一个空数组film.genre并将 id 从它添加到该数组而不是将它分配给film.genre. 然而,这不起作用,因为当我在输出电影之后我仍然得到一个对象数组,其中 name: id 通过某些逻辑。

我在 film.genre 中得到了什么:

"genre": [ 0: { "id": 1, "name": "Action" }, 1: { "id": 5, "name": "Comedy" }, ..]  
Run Code Online (Sandbox Code Playgroud)

我需要的:

"genre" : [1, 5]
Run Code Online (Sandbox Code Playgroud)

javascript angularjs ng-tags-input

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