- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题想问那些熟悉 MigLayout 或基本 Swing 使用方法的人。
我正在尝试为游戏创建服务器浏览器。
布局最终将如下所示。另外,老实说我不知道该使用什么布局管理器。
+---------+---------+---------+---------+---------+---------+---------+-------------------+---+-----+
| tab1 | tab2 | tab3 | tab4 | tab5 | tab6 | tab7 | | X | |
+---------+---------+---------+---------+---------+---------+---------+ +---+ |
| |
+-----------+--------------------+---------+-----------+ |
| Country | Servers | Players | Game mode | |
+-----------+--------------------+---------+-----------+ |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
+-----------+--------------------+---------+-----------+ |
| |
| |
| +---------------+ |
| | Username | |
| +---------------+ |
| |
| +-------------+ +-------------+ |
| | Spectate | | Play | |
| +-------------+ +-------------+ |
| |
| |
+---------------------------------------------------------------------------------------------------+
调整窗口大小时,所有组件都应填充 x 轴。就像带有动态 TabbedPane 的动态面板一样。
这是迄今为止我的代码:
/**
* A class handling the server browser.
* @author Jamie
*/
public class ServerBrowser extends JPanel {
/**
* Handle the server browser from client.
* @param c The client reference in case it was used in-game.
* @param m The main reference in case it was used in-game.
* TODO @return reference
*/
public Client c;
public Main m;
private int width = 400;
private int height = 500;
private JTabbedPane tabbedPane;
public ServerBrowser(Main m, Client c) {
this.m = m;
this.c = c;
this.setLayout(new BorderLayout());
this.setBorder(new LineBorder(Color.GRAY, 1, true));
// Creating the object and template
tabbedPane = new JTabbedPane();
this.add(tabbedPane);
/**
* Handle the tabs from the tabbed pane.
*/
JPanel internetTab = new JPanel();
JPanel customTab = new JPanel();
JPanel favoritesTab = new JPanel();
JPanel historyTab = new JPanel();
JPanel spectateTab = new JPanel();
JPanel lanTab = new JPanel();
JPanel friendsTab = new JPanel();
// Creates the label to go in each of the tabs
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JLabel label3 = new JLabel();
JLabel label4 = new JLabel();
JLabel label5 = new JLabel();
JLabel label6 = new JLabel();
JLabel label7 = new JLabel();
//Set the text of each of the labels in the tabbed panes.
label1.setText("This tab will display a list of all the servers.");
label2.setText("What should this tab display?");
label3.setText("What should this tab display?");
label4.setText("What should this tab display?");
label5.setText("What should this tab display?");
label6.setText("What should this tab display?");
label7.setText("What should this tab display?");
//Add the labels to the specific tabs
internetTab.add(label1);
customTab.add(label2);
favoritesTab.add(label3);
historyTab.add(label4);
spectateTab.add(label5);
lanTab.add(label6);
friendsTab.add(label7);
// Create test JTextArea and place at certain x,y coordinate
JTextArea unText1 = new JTextArea();
internetTab.add(unText1);
unText1.setBounds(200,200,150,50);
// Name the tabs and add them into the Tabbed Pane object
tabbedPane.addTab(" Internet ", internetTab);
tabbedPane.addTab(" Custom ", customTab);
tabbedPane.addTab(" Favorites ", favoritesTab);
tabbedPane.addTab(" History ", historyTab);
tabbedPane.addTab(" Spectate ", spectateTab);
tabbedPane.addTab(" Lan ", lanTab);
tabbedPane.addTab(" Friends ", friendsTab);
// Buttons
JButton test = new JButton("Press");
customTab.add(test);
// Action listener
ButtonHandler phandler = new ButtonHandler();
test.addActionListener(phandler);
this.setVisible(true);
public void handleResize() {
// Center
//int x = (m.getWidth() - width) / 2;
int x = m.getWidth() - width - 25;
int y = (m.getHeight() - height - m.mb.getHeight()) / 3;
this.setBounds(x,y,width,height);
}
我花了很多时间想出一个解决方案来实现这样的服务器浏览器,但我还没有成功..我想要的是制作一个类似于下面的服务器浏览器
您将如何实现这一目标?
最佳答案
根据需要使用尽可能多的 JPanel。我在这里至少使用 2 或 3 个。第一个用于标签和选项卡 Pane ,第二个(和第三个)用于其余部分。以下是如何管理第一个的示例:
import java.awt.*;
import javax.swing.*;
import net.miginfocom.swing.MigLayout;
public class App {
public static void launchView(){
JFrame frame = new JFrame("Game");
JLabel servers = new JLabel("Servers");
Object [][] data = {{"A","B","C","D"}, {"E","F","G","H"}}; //add more components to see the effect
String [] columnNames = {"Servers", "Game", "Players", "Map"};
JTable table = new JTable(data, columnNames); //or proper JTabbedPane
frame.setLayout(new MigLayout());
frame.add(servers, "pos 0% 5% 30% 10%");
frame.add(new JScrollPane(table), "pos 0% 20% 100% 100%");
frame.setSize(new Dimension(500, 400));
frame.setVisible(true);
}
public static void main(String [] args){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
launchView();
}
});
}
}
但是,当然,在 Mig 中通常有不止一种方法可以做到这一点。如果您在管理其他组件时仍然遇到问题,请告诉我
关于java - MigLayout - 服务器浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31934100/
谁能解释一下 Server.MapPath(".")、Server.MapPath("~")、Server.MapPath(@"之间的区别\") 和 Server.MapPath("/")? 最佳答案
我不知道,为什么我们要使用 Server.UrlEncode() & Server.UrlDecode()?!在 QueryString 中我们看到 URL 中的任何内容,那么为什么我们要对它们进行编
我已经通过 WHM 在我的一个域上安装了 ssl 证书。网站正在使用 https://xyz.com . 但是它不适用于 https://www.xyz.com .我已经检查了证书,它也适用于 www
我已经使用 WMI 检测操作系统上是否存在防病毒软件,itz 正常工作并通过使用命名空间向我显示防病毒信息,例如 win xp 和 window7 上的名称和实例 ID:\root\SecurityC
我们有 hive 0.10 版本,我们想知道是否应该使用 Hive Server 1 或 Hive Server2。另一个问题是连接到在端口 10000 上运行的 Hive 服务器,使用 3rd 方工
我想在 C++ 中使用 Windows Server API 设置一个 HTTPS 服务器,我使用了示例代码,它在 HTTP 上工作正常,但我就是不能让它在 HTTPS 上工作。 (我不想要客户端 S
我写了一个非常基本的类来发送电子邮件。我用 smtp 服务器对其进行了测试,它工作正常,但是当我尝试使用我公司的交换服务器时,它给出了这个异常: SMTP 服务器需要安全连接或客户端未通过身份验证。服
我的应用程序包含一个“网关”DataSnap REST 服务器,它是所有客户端的第一个访问点。根据客户端在请求中传递的用户名(基本身份验证),请求需要重定向到另一个 DataSnap 服务器。我的问题
我有一个 Tomcat 服务器和一个 Glassfish4 服务器。我的 Servlet 在 Tomcat 服务器上启动得很好,但在 Glassfish4 服务器上给我一个“HTTP Status 4
我在 vmware 上创建了一个 ubuntu 服务器。我用它作为文件服务器。如果我通过托管虚拟机的计算机进行连接,则可以访问它。我无法从同一网络上的其他计算机执行此操作。提前致谢! 最佳答案 首先确
如何重启 Rails 服务器?我从 开始 rails server -d 所以服务器是分离的 我知道的唯一方法就是去做ps 辅助 | grep rails 并 kill -9关于过程#但是像这样杀死进
我实际上正在尝试找到编写一个简单的 XMPP 服务器的最佳方法,或者找到一个占用空间非常小的服务器。我只关心XMPP的核心功能(状态、消息传递、群组消息传递)。目前还在学习 XMPP 协议(proto
我实际上正在尝试找到编写简单 XMPP 服务器的最佳方法,或者找到一个占用空间非常小的方法。我只关心 XMPP 的核心功能(统计、消息、组消息)。目前也在学习 XMPP 协议(protocol),所以
我们正在尝试从 Java JAX-RS 适配器访问 SOAP 1.1 Web 服务。 我们正在使用从 WSDL 生成的 SOAP 客户端。 但是当解码 SOAP 故障时,我们得到以下异常: ... C
目前,我和许多其他人正在多个平台(Windows、OS X 和可能的 Linux)上使用 Python HTTP 服务器。我们正在使用 Python HTTP 服务器来测试 JavaScript 游戏
我有一个连续运行的服务器程序(C#/.NET 2.0 on Linux with mono),我想从 PHP 脚本连接到它以在网站上显示状态信息。 目的是创建一个(某种)实时浏览器游戏(无 Flash
所以我有一个单页客户端应用程序。 正常流程: 应用程序 -> OAuth2 服务器 -> 应用程序 我们有自己的 OAuth2 服务器,因此人们可以登录应用程序并获取与用户实体关联的 access_t
我们刚刚将测试 Web 服务器从 Server 2008 升级到 Server 2012 R2。我们有一个部署我们网站的批处理脚本。当它将站点推送到服务器时,它现在失败了。奇怪的是,我可以使用相同的发
建议一些加载SpagoBI服务器的方法,我尝试了所有方法来解析spagobi服务器。在 Catalina 中,错误是 - * SEVERE: Unable to process Jar entry [
当我们点击应用程序服务器(apache tomcat)时,它会创建一个线程来处理我们的请求并与 tomcat 连接,建立连接,tomcat 创建另一个线程来处理请求并将其传递给连接,连接线程将其传递给
我是一名优秀的程序员,十分优秀!